{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CGANs - Conditional Generative Adversarial Nets\n",
    "\n",
    "Brief introduction to Conditional Generative Adversarial Nets or CGANs. This notebook is organized as follows:\n",
    "\n",
    "1. **Research Paper**\n",
    "* **Background**\n",
    "* **Definition**\n",
    "* **Training CGANs with MNIST dataset, Keras and TensorFlow**\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Research Paper\n",
    "\n",
    "* [Conditional Generative Adversarial Nets](https://arxiv.org/pdf/1411.1784.pdf)\n",
    "\n",
    "## 2. Background\n",
    "\n",
    "**Generative adversarial nets** consists of two models: a generative model $G$ that captures the data distribution, and a discriminative model $D$ that estimates the probability that a sample came from the training data rather than $G$.\n",
    "\n",
    "The generator distribution $p_g$ over data data $x$, the generator builds a mapping function from a prior noise distribution $p_z(z)$ to data space as $G(z;\\theta_g)$.\n",
    "\n",
    "The discriminator, $D(x;\\theta_d)$, outputs a single scalar representing the probability that $x$ came form training data rather than $p_g$.\n",
    "\n",
    "The **value function** $V(G,D)$:\n",
    "\n",
    "$$ \\underset{G}{min} \\: \\underset{D}{max} \\; V_{GAN}(D,G) = \\mathbb{E}_{x\\sim p_{data}(x)}[log D(x)] + \\mathbb{E}_{z\\sim p_{z}(z)}[log(1 - D(G(z)))]$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3. Definition\n",
    "\n",
    "Generative adversarial nets can be extended to a **conditional model** if both the generator and discriminator are conditioned on some extra information $y$. \n",
    "\n",
    "* $y$ could be any kind of auxiliary information, such as class labels or data from other modalities. \n",
    "\n",
    "We can perform the conditioning by feeding $y$ into the both the discriminator and generator as additional input layer.\n",
    "\n",
    "* **Generator**: The prior input noise $p_z(z)$, and $y$ are combined in joint hidden representation, and the adversarial training framework allows for considerable flexibility in how this hidden representation is composed.\n",
    "\n",
    "* **Discriminator**: $x$ and $y$ are presented as inputs and to a discriminative function.\n",
    "\n",
    "### Network Design\n",
    "\n",
    "<img src=\"../../img/network_design_ccgan.png\" width=\"600\"> \n",
    "\n",
    "\n",
    "### Cost Funcion\n",
    "\n",
    "$$ \\underset{G}{min} \\: \\underset{D}{max} \\; V_{CGAN}(D,G) = \\mathbb{E}_{x\\sim p_{data}(x)}[log D(x|y)] + \\mathbb{E}_{z\\sim p_{z}(z)}[log(1 - D(G(z|y)))]$$\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. Training CGANs with MNIST dataset, Keras and TensorFlow\n",
    "\n",
    "CGANs implementation using fully connected and embedding layers and the [Keras](https://keras.io/) library.\n",
    "\n",
    "* **Data**\n",
    "    * Rescale the MNIST images to be between -1 and 1.\n",
    "    \n",
    "* **Generator**\n",
    "    * **Simple fully connected neural network**, **LeakyReLU activation** and **BatchNormalization**.\n",
    "    * The input to the generator are the **normal distribution** $z$ and $y$. They are combined in joint hidden representation.\n",
    "        * Embedding($y, z$).\n",
    "    * The last activation is **tanh**.\n",
    "    \n",
    "* **Discriminator**\n",
    "    * **Simple fully connected neural network** and **LeakyReLU activation**.\n",
    "    * The input to the discriminator are $x$ and $y$. They are combined in joint hidden representation.\n",
    "        *  Embedding($y, x$).\n",
    "    * The last activation is **sigmoid**.\n",
    "    \n",
    "* **Loss**\n",
    "    * binary_crossentropy\n",
    "\n",
    "* **Optimizer**\n",
    "    * Adam(lr=0.0002, beta_1=0.5)\n",
    "\n",
    "* batch_size = 64\n",
    "* epochs = 100\n",
    "\n",
    "### 1. Load data\n",
    "\n",
    "#### Load libraries"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:28.327180Z",
     "start_time": "2018-09-20T13:03:23.067055Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:48.891785Z",
     "start_time": "2018-09-20T13:03:28.329147Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "from keras.datasets import mnist\n",
    "from keras.models import Sequential, Model\n",
    "from keras.layers import Dense, LeakyReLU, BatchNormalization\n",
    "from keras.layers import Input, Flatten, Embedding, multiply, Dropout\n",
    "from keras.optimizers import Adam\n",
    "from keras import initializers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "#### Embedding layer background"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:52.100161Z",
     "start_time": "2018-09-20T13:03:48.893951Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[[ 0.04477647  0.0212541 ]\n",
      "  [ 0.04934653  0.03178449]\n",
      "  [-0.00830252  0.02379955]\n",
      "  [-0.03194918  0.02114464]\n",
      "  [-0.04820339  0.00343671]\n",
      "  [-0.04765418  0.04966376]\n",
      "  [ 0.01436583  0.00427882]\n",
      "  [ 0.00227832 -0.02557712]\n",
      "  [ 0.03425236 -0.03970231]\n",
      "  [-0.03690929  0.02766602]]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x2b2393f4ae80>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model = Sequential()\n",
    "model.add(Embedding(10, 2))\n",
    "# the model will take as input an integer matrix of size (batch, input_length).\n",
    "# the largest integer (i.e. word index) in the input should be no larger than 999 (vocabulary size).\n",
    "# now model.output_shape == (None, 10, 64), where None is the batch dimension.\n",
    "\n",
    "# input_array = np.random.randint(10, size=(1, 10))\n",
    "input_array = np.arange(0, 10).reshape(1, -1)\n",
    "model.compile('rmsprop', 'mse')\n",
    "output_array = model.predict(input_array)\n",
    "print(output_array)\n",
    "# print(output_array.shape)\n",
    "plt.scatter(output_array[0, :, 0], output_array[0, :, 1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "#### Getting the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:52.811948Z",
     "start_time": "2018-09-20T13:03:52.102124Z"
    }
   },
   "outputs": [],
   "source": [
    "# load dataset\n",
    "(X_train, y_train), (X_test, y_test) = mnist.load_data()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Explore visual data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:53.254940Z",
     "start_time": "2018-09-20T13:03:52.814355Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADkCAYAAADNX7BjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XecVNX5x/HPIzYUUbGgxthiBWNFo8aoUWxIUERF7Mao0YjG3gl2BTv2aGwgmiiKvQVBxGgUlV9s2AJWEiF0UUHv74+Z586Z3QF2dqecmf2+X699cT33zp0zx9k997TnWJIkiIiIxGaRamdARESkEFVQIiISJVVQIiISJVVQIiISJVVQIiISJVVQIiISpapWUGbW38wGVzMP9UTlWXoq09JSeZZWvZdn2SsoMzvIzF43s1lm9pWZPWVm25f7feeTl7XM7AUz+8bM3jezrtXIR0tEVp4Xmdm/zGyemfWvRh5KIZYyNbOVzWyomX1pZtPNbIyZ/aLS+WipWMozm5cXzOxrM5thZuPMbO9q5KMlYirPIE87mlliZheX833KWkGZ2SnAtcClQEdgDeAmoFpfkqHAm8AKwLnAg2a2UpXyUrQIy/Mj4AzgiSq9f4tFVqbtgNeALYEOwN3AE2bWrgp5aZbIyhPgJGDVJEnaA8cAg81s1SrlpWgRlidmthhwHfBq2d8sSZKy/ADLArOA/RdwTX9gcPDffwMmAdOBF4HOwbluwLvATOAL4LRs+orA48A04H/AaGCRAu+1PvAdsEyQNhr4fbnKoJ7Ls8H7Dgb6V7uM6qlMg3vOALasdlnVQ3kCWwPfAltXu6xquTyBs4ABwF3AxeUsg3K2oLYFlgQeLuI1TwHrASsDbwBDgnN3AMcmSbIMsDEwIpt+KvA5sBKZJ4xzgELxmzoDnyRJMjNIG5dNrwWxlWc9iLpMzWwzYHEyLdVaEGV5mtnjZvYtmSf+kcDrReSvmqIrTzNbE/gtcGEReWq2Rct47xWAyUmSzGvqC5Ik+YsfZ8c0pprZskmSTAfmAp3MbFySJFOBqdlL5wKrAmsmSfIRmdq/kHZknipC04GfNDV/VRZbedaDaMvUzNoD9wIXZO9dC6IszyRJume7pboCGyZJ8mMxH6qKYizP64HzkySZZWbFfZpmKGcLagqwopk1qRI0szZmdrmZfWxmM4AJ2VMrZv/tRaaJOtHMRpnZttn0gWSeMJ81s0/M7Kz5vMUsoH2DtPZkmru1ILbyrAdRlqmZtQUeA15JkuSy4j5SVUVZngBJksxNkuQpYHcz61HEZ6qmqMrTzH5DZojkgWZ+nuJVoP90v6b0nwKHAu8BawMGLEemmblug9csBpwMfFbgfp2B/wK7FDi3Ppn+53AM6kVqbwwqivJscF2tj0FFU6bAEsAzwH00cZwqlp8Yy7PA9c8DJ1e7rGqxPMlM1phBZoxrEjAnm7/h5SqDsrWgkkyTsh9wo5ntY2ZLmdliZranmQ0o8JJlyEximAIsRWbWCgBmtriZHZxtqs7NFtIP2XPdzWxdy7Q3Pf2HAvn5AHgL+JOZLWlmPYFNgIdK+bnLJbbyzF67mJktSaYlvmi2XNuU7lOXV2xlmu2GepDML/5hSe10RQFRlueG2fdum83HIcAOwKjSfvLyiK08gfPJPOhvlv15FPgzcGSJPnJjFXgKOJjMoORsMrXuE8B2BWr/dsBwMl1uE4HDyNb+ZAaKnybTZzqDzFTc7bOvO5lMU3Y2mYG+8xeQl7XIDJLOAcYDXav9lFTj5XlX9p7hzxHVLqNaLVNgx+z9viHzZOo/v6p2GdVoeW5EZmLETDIz1F4Dela7fGq1PAvk6y7KPIvPsm8kIiISFcXiExGRKKmCEhGRKKmCEhGRKKmCEhGRKKmCEhGRKBUV6sjMNOUvK0mSFsf5UHnmqDxLbnKSJC2K1K/yzNPi8gSVaagpv/NqQYnUp4nVzkCdUXlWgSooERGJkiooERGJkiooERGJkiooERGJkiooERGJkiooERGJkiooERGJkiooERGJUlGRJGKz5ZZbAnDCCSekaYcddhgA99xzDwCDBg1Kz73xxhsVzJ2IiLSEWlAiIhKlonbUjSGO1GabbZYejxgxAoD27dvP9/rp06enxyussELJ8tHaYsedd955AFxwwQVp2iKLZJ5vdtpppzRt1KhRzbp/PZbnMsssA0C7du3StL322guAlVbKhHW7+uqr03PfffddKd9+bJIkXVpyg0qV5/rrr58eL7bYYgDssMMOANx0003puR9//LGo+w4fPhyAAw88ME37/vvvm5vNFpcnxPcdLdYuu+wCwJAhQ9K0HXfcEYDx48cXdS/F4hMRkZpVM2NQW2+9NQAPPfRQmrbssssCELYCZ86cCeSelMJW0zbbbAPkj0W14ImqVTjiiCMAOPPMM4HCT7HFtMLr1VprrQXkyglg2223BWDjjTee7+tWXXXV9PjEE08sT+Yi07lzZyD33dp///3Tc94qX2211YD871ux37MePXoAcMstt6Rpf/zjHwGYMWNGkbmuLG9B+t+vhx9+uJrZSW211VYAvPbaaxV5P7WgREQkSqqgREQkSlF28S211FLp8RZbbAHA4MGDgfwukUI+/PBDAAYMGADA/fffn54bM2YMkBvwB7jssstKkOP6teaaawKw5JJLVjkn8dhwww3TY+8yOvjggwFo27Ztes4sMwb82WefpWneBb3RRhsBcMABB6TnfELA+++/X45sR8N/57p161aR9/OlJwB33HEHkPtbECufeLTeeusB1e3i825XgLXXXhvI/V2A3Pe8LO9dtjuLiIi0QJQtqFtvvTU97tOnT1Gv9RaXT+0Npz37U8kmm2zSwhzWt65du6bHffv2zTsXPt13794dgP/85z+VyViV+GScK664AoDevXun53wqeSHemt99993TNJ9G7eW44oorpufC43r23HPPAYVbUP/973+BXEsnfHovNEFnu+22A3JTneuFt/r+8Y9/VDkn+b1WRx99NJDr0YLytvjVghIRkSipghIRkShF1cXnsfV8tT00HoALu+wee+wxAK688so07csvvwTgzTffBGDq1KnpuZ133rngPSVj++23B+DOO+9M07x7yw0cODA9njhxYmUyVmU9e/YE4He/+91Cr/3444/T41133RXInySx7rrrljh3tefmm28G4JFHHml0bu7cuQBMmjSpSffyKDJvv/02kFs/FQrf5/XXXy8us1USdm1W2+23394ozbuvyy2eUhAREQlE0YLy+Ho+eBrG1vPV40899RSQP2nCB0bDaeNe23/99dcAjBs3Lj3ng6xhC80nVSjSORx++OFA4afQkSNHArko8a1JGOmgoQkTJgC5lfVhJImw5eR8enlrNm/ePKBw+RTLJ6Asv/zy873m888/T49LHO+wpMLJWx07dqxiTvI17EWB3N/qclMLSkREolS1FlQYwfj0008HcjX15MmT03NfffUVAHfffTcAs2bNSs898cQTef82VbiY8tRTTwVyCy1bm3Bq829/+1sgfzrvtGnTALj44osrm7GI+NTaY445BoBnn302PffRRx8BuenRCxPTk3GtCqOT+/+b8He6oX79+pU9T6UQTrtf0OepFP+u+uLc0BdffFGRPKgFJSIiUVIFJSIiUap4F98SSywB5E8N96atxykLY2f5tNByNXnXWGONstw3dr49RLh9SSGDBg0C4IUXXih3lqLlSxf69+/f4nv5FhzSNGHX+1lnnQXkT9X3yByFvPXWW0Bu6nrsNthgg0Zp77zzThVykuF/o8Nu6Q8++ADI/a0uN7WgREQkShVvQW2++eZA4Thce++9N9D8bcOl6fbYYw+gcFzCv//97+nxddddV7E81TLfbHDppZde4HU///nP8/775ZdfTo9jiLtWCd56P/TQQ4H82I8N+eJxWPCGhb4BobeyAJ588kkA5syZ0+y8Vlu5Nwb0JT3+9wDgkEMOAWC33XZrdP1FF10E5CZPlZtaUCIiEqWKt6CuvvpqID/ckLeYyt1y8vAhhaIitxb77LMPAJdffnmjcy+99BKQW7ALMH369MpkrAb4PmWdOnVK0/70pz8BhXsEFvR983GtI488Mk374YcfSpfZyITb3j/66KNAacd/R48eDcBtt91WsnvGoEOHDk26btNNNwVyf1fDVunqq68OwOKLLw7kj+v5dzRsZb766qtAblHzoovmqomxY8cW9wFaSC0oERGJkiooERGJUkW6+HxjO8jF3QsHPL3JX27e1RK+t09FrWc+KA0Lnlb+ySefAPW/AWFThNOXfWKPl124gZt3jXiXXTjRwQeevWsw5N0m++67b5rmE1K+//77ln+AiHk3VFN2FVjYhoXO/8bsueeeaZrH76wVYTeb/4265ZZbADjnnHMW+Fqf7ORl6vEOAb755hsA3n33XQD+8pe/pOd8GU84vOK//x7DMFziU87NCQtRC0pERKJUkRZUWAP7QF0Yu+yBBx4o+Xv6guBCiytHjBiRHp999tklf+/YhBG2F/QUWmjiRGvj389w2u2wYcPyrrngggvSY/8ujRkzBsgf1PZz4QQBt9JKKwFw2WWXpWmffvopkL9/UczRt4vh+zUB7LTTTkBuOvMzzzyTnvv2228Xeq+jjjoqPe7bt2+Jclh9xx9/fHrse635lvYL0/C7895776XnXnnllaLy4TEn/TvqPSvVoBaUiIhESRWUiIhEqWrbbYRdF76lRil4155vYuhbeUBu0O+qq65K08LtO+qNT0gptCLcDR8+PD0eP3582fMUo3BChHffhd8b54PuHp8QcivqvTvEoxdALmpEOOlhwIABQK7bz6OnAAwZMgSA559/Pk274oorAJg6dWqj/NTqBB/vvrrkkkua9fqw276euvhC/v+9GnbZZZe8/15YvM5yUgtKRESiVLUWVCmnlntLAXJPvr179wbyWwi9evUq2XvWAt9Yr9B22D5wesQRR1QyS1Fp06YNkIsvBnDaaacBMHv27DTN47vdf//9QH4csi5dugBwww03ALkp6QAffvghAMcdd1ya5lHhPQZaOAjuK/x79OiRpjXcWjvcJr3QRnKtgW/zLpXx8MMPV+291YISEZEoVaQFFS7I82OPCQdw0kknNeu+J598MgDnn39+mubbxnt/fri3VGuzwgorAIWnlt90001AfY/BLYxPp/VWE+QWNR577LFpmrdEt9lmGyA/fp4vDPWlFBdeeGF67s477wTyWz3Oo28//fTTaZof9+nTJ0076KCD8l7n3/mYhWN6Pv4ZLu1obnRxL3dF2G891IISEZEoqYISEZEoVaSLL4x958errLJKmnb99dcDuRhRU6ZMSc95t4pvbuZh5SEXRt5XUUNuVbp3YbVG3rUUxjFrKNwor7Xq169fozSfOBFOM/dpzeFW4w35NWFkiOZunzF06NCCx7HzzQXPPffcNG3XXXcF8id0FOrybMgjcoTbmPhWPYViG3q3YVMiUUjT+HDM+uuvn6YVG5WipdSCEhGRKFVtmrk/qUIuBpVPA/cBZID11ltvvvfwVoBP3YXCT8WtQTjV3jcr88kR4ULRG2+8EVDEcoBJkyYBuUW2kFvoHbbUnS/CffHFF9M0j302YcIEoL43HVwYn2pfKPbgGWeckR7PnDlzoffyltcWW2yRphXa8n3kyJEA3HzzzUD+3wJpGS/vBfXElJtaUCIiEiVVUCIiEqWKdPGFm7i99tprAGy11VaNrvOJEx07dmx0zidO+Gp+aP76qXq03HLLpcfhBBSAL774Ij0O1/y0djvssAOQvybPu5TC7WB88o7Hw6v3DQXLIYym0Vz+/+Sxxx5L0/xvgCZHlM+2226bHt91110VfW+1oEREJEoVaUF5FHHIbXEdrtT3yOOF+KpxHwT96KOPypFFaYV8sP7ee+9N08JjKY7HdQwjjB9++OFF3ePjjz8GchE9Ro8enZ677bbbgPzND6V8wghA1aIWlIiIRKni08x976dwT5dC27JLcd5///302Kff+8JJkUrw/anCrcv/+c9/AnDxxRenaR5d36fohxHbffcBXwIglef7nu2///5VzolaUCIiEilVUCIiEiUrtDp7vhebNf3iOpckSYtHEFWeOSrPkhubJEmXltxA5ZmnxeUJKtNQU37n1YISEZEoqYISEZEoqYISEZEoqYISEZEoqYISEZEoqYISEZEoFRtJYjIwsRwZqTFrlug+Ks8MlWfplaJMVZ45+o6WVpPKs6h1UCIiIpWiLj4REYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYmSKigREYlSVSsoM+tvZoOrmYd6ovIsPZVpaak8S6vey7PsFZSZHWRmr5vZLDP7ysyeMrPty/2+88nLBDObk83LLDN7thr5aImYyjObn5PM7N9mNtvM3jOz9auVl+aKpUzNbI3gu+k/iZmdWum8tEQs5ZnNy2ZmNtrMppvZ52bWrxr5aInIynM7M/unmc00s/8rdz7KWkGZ2SnAtcClQEdgDeAmYO9yvu9C/CZJknbZn92qmI+ixVaeZvY74ChgL6Ad0B2YXI28NFdMZZokyafBd7Md8HPgR+ChSueluWIqz6z7gBeBDsCOwHFm1qNKeSlaTOVpZh2AR4GBwHLAAOAxM1u+bG+aJElZfoBlgVnA/gu4pj8wOPjvvwGTgOlkvlSdg3PdgHeBmcAXwGnZ9BWBx4FpwP+A0cAi83m/CUDXcn3mcv7EVp5kHm4+A3apdtnUS5kWeO8/AS9Uu5xquTyBb4BODd7v7GqXVS2WJ5kH0HcapH0AHFWuMihnC2pbYEng4SJe8xSwHrAy8AYwJDh3B3BskiTLABsDI7LppwKfAyuRecI4B0gW8B5DzOxrM3vWzDYtIm/VFlt5rp792djMPst2811gZrU08Sa2Mm3oMODuIvJWbTGW57XAYWa2mJltkM3j80Xkr5piK0/L/jRM27iI/BWlnH9MVgAmJ0kyr6kvSJLkL0mSzEyS5DsyTwabmtmy2dNzgU5m1j5JkqlJkrwRpK8KrJkkydwkSUYn2aq9gIOBtYA1gReAZ8xsuaI/WXXEVp6rZ//djUxX1K+BPmS6/GpFbGWaMrNfkflj8WCRn6maYizPx4H9gDnA+8AdSZK8VvxHq4rYyvNlYDUz65Ot8A8HfgYs1czPt1DlrKCmACua2aJNudjM2pjZ5Wb2sZnNINMdB5nmJ0AvMk3UiWY2ysy2zaYPBD4CnjWzT8zsrPm9R5IkY5IkmZMkyTdJklxGpkn7q+I/WlXEVp5zsv8OSJJkWpIkE4Bbs/esFbGVaehw4KEkSWY19cNEIKryzI6ZPA1cSKYl8lNgdzM7vhmfrRqiKs8kSaaQGfs6BfgPsAeZ1ujnxX+0JipX3yG5/tP9FnBNf7L9p8ChwHvA2mSajcuRaWau2+A1iwEnA58VuF9n4L80cVwk+349ylUG9VyeZJ6avgN2CNJOBR6udlnVapkG17QlM4awc7XLqJbLE+gCTG2Q9kfg8WqXVS2WZ4FrFwUmAruXqwzK1oJKkmQ60A+40cz2MbOlss3CPc1sQIGXLEPmD94UMn/8LvUTZra4mR1sZssmSTIXmAH8kD3X3czWNTML0n9oeHPLTOH9ZfZeS5rZ6WSeLMaU9pOXR2zlmSTJN8ADwBlmtoyZrQ4cTaZLpSbEVqaBnmRa9y+U4GNWTITl+UHmcjvIzBYxs1WA3sC40n3q8omwPDGzzbN5aA9cCXyeJMkzpfvUDVTgKeBg4HVgNpnZJU8A2xWo/dsBw8nMMJlIZoA4AdYFFifTVJ9KpgBfA7bPvu5kMk3Z2WSamufPJx+dgf/LXjcF+DvQpdpPSbVantlr2wP3Z9/jMzK/TFbtMqrlMs1e/wxwUbXLpR7KE9g5+9rp2bz8GViq2mVUw+U5NFuW08k8oK5czs9u2TcVERGJSi1NCRYRkVZEFZSIiERJFZSIiERJFZSIiERJFZSIiESpSSuUnZlpyl9WkiQNY1IVTeWZo/IsuclJkqzUkhuoPPO0uDxBZRpqyu+8WlAi9WlitTNQZ1SeVaAKSkREoqQKSkREolTUGJS0Duuvn9u1/emnnwagTZs2AKy55ppVyZOItD5qQYmISJTUgpLUoEGDAOjdu3ea1qFDBwAef7xmgpSLSJ1QC0pERKKkCkpERKKkLr5WqmPHjgAMGzYsTdtmm20ACLdgefvttwE46qijKpg7ERG1oEREJFLRt6B8evOyyy4732tOOOGE9HippZYCYIMNNgDgD3/4Q3ruyiuvBKBPnz5p2rfffgvA5ZdfDsAFF1xQimxHy6eQe1n84he/aHTN2WefnR6//vrrAEyZMqUCuRNpmaWXXjo9HjlyJACrrbZamvbLX/4SgAkTJlQyW9JMakGJiEiUqtaCWmONNdLjxRdfHIDtttsOgO233z49t9xyywHQq1evou7/+eefA3D99denaT179gRg5syZadq4ceMAGDVqVFH3r1U+bbxbt27zvcbLDuCFF14oe55EmsJbQiut1Dhm69SpUwH49a9/naZtueWWAIwfPz5NU09AbVELSkREoqQKSkREolTxLr7NNtsMgBEjRqRpC5oAUawff/wRgPPOOw+AWbNmpeeGDBkCwFdffZWmeddA2A1Qb8LYevfddx8AZo23Ytl3330BGD58eGUyVudOPfVUINeFDbDRRhsBcPDBBze6/v333wegc+fOFchdPDbeeOP0+MQTTwQKx3z073E4POB8klOnTp3SNP+Of/HFF2la+P+itfCJUIcccggAO+64Y3qu0HfttNNOA+DLL78E8odcBg8eDMCrr75answ2oBaUiIhEqeItqE8//RTIH6wspgUV1tzTpk0D8gdGv//+ewDuvffeFuWznhx66KHpsT99PvnkkwD8/ve/T8+FT5rSNP406q2A8OnUJ+UUaq2Gi6HdeuutB8C7776bpoUtgnq18847p8cLWhD+3XffAbmn+PC1Z511VqPrvYzvuuuuNK21TJII42led911AKy44opA/vfRp+KHE08GDhyYd6/wer/uwAMPLG2G50MtKBERiZIqKBERiVLFu/j+97//AXD66aenad27dwfgzTffBPLXLrm33noLgF133TVNmz17NpA/0HfSSSeVOMe16+WXXwZyE1Mgt4L+5JNPBtStNz+rrrpqejx06FAA1llnnUbXefe0RzAIu0PGjh0LwBZbbNGk91xkkUXy7lXv+vfvD+T/LXB33303AF9//XWa5tFPwjT/bj/zzDNArhsrvO7BBx8sYa7jtOiimT/lXbp0AeDPf/5zes6j67z44osAXHTRRem5l156CYAlllgiTfvrX/8KwG677dbofTyyTKWoBSUiIlGqWiSJRx55JD32Kece4WHTTTdNz/mgqT89easp9M4776THxxxzTOkzW2P23ntvIDe9NByQ/9vf/gbkYhBKvq5duwL5T6A//elPm/z6cFLD5MmTgfyneo+GcOeddwKw+uqrN7pHOEminnlLsW3btmnaxIkTATj33HOB/CUhbt11102PzznnHCA3eB/+ffAWWmv4rvsU8ttvv73Rueeeew7ITZyYMWNGo2vCSRUNW05hZBlv2VaKWlAiIhKlKKKZN6zRp0+f3uiao48+GoAHHnggTfNFuZKLWQjwq1/9ar7X+cLk8KloQXxMr1Arwhf01ZMzzjgDWHCryac7A5x55pkAvPLKK0DhBd/h1GYvz0ItJx8fDJcF1DMfG9pjjz3SNG+B+sLb448/Pj3n431XX311mrbXXnsBubHtSy65JD138803lyPb0QjHkrwl6b0lN910U3rOgxYUajk5b7EW4ounIX/8rxLUghIRkSipghIRkShF0cXXkA9uQi5kvq/Q90FsgGeffbai+YrZDz/8kB57mfm05bAr1KeaFuJTz0N9+/YFCsdG81hzYXdVLU5bDweFfdv7QjwKStgFN2bMmKLeq1DXnvMYiD65ot750hHvHoVcF59HiAiXlVxzzTVA4Vh8vtHooEGDypPZiPTr1w/IdetBLoKOT7f3rmeAOXPm5L1+ySWXTI/9ux+WqS+VuPjii4HqxuZUC0pERKIUZQsqnCrqkyPeeOMNIH/6r2+mFy4eu/HGG4HCsc7qWRgDzidJeMvJn/yh8dN5uIjXX9ejR49G9/f/J+Hkig022ADIXwjpMbp8unAt8JYg5BY1hnzBsz+lN7XVtPzyywP5kwB22GGHgveGXHzE1sInmxQavPfp+A899FCa5k/24e/2HXfcAeQvW6lH4SQonzgSloO3nPbZZ5/53sOn5/uuDpDrbQn57/OAAQNakOPSUAtKRESiFGULKvTxxx8DcMQRRwC5BY6QGwsIxwR88d8999wDFF7oV0+WWWYZANZee+1G53w/lzCy+0cffQTk9tYJw8z4At+wleXjfFdddRWQH3neF1iXcj+varjtttvSY19UGy51OOiggwCYNGlSUff1SPHhdGDni8sPOOCA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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "for i in range(10):\n",
    "    plt.subplot(2, 5, i+1)\n",
    "    x_y = X_train[y_train == i]\n",
    "    plt.imshow(x_y[0], cmap='gray', interpolation='none')\n",
    "    plt.title(\"Class %d\" % (i))\n",
    "    plt.xticks([])\n",
    "    plt.yticks([])\n",
    "    \n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Reshaping and normalizing the inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:53.571718Z",
     "start_time": "2018-09-20T13:03:53.256909Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_train.shape (60000, 28, 28)\n",
      "y_train.shape (60000,)\n",
      "X_train reshape: (60000, 784)\n"
     ]
    }
   ],
   "source": [
    "print('X_train.shape', X_train.shape)\n",
    "print('y_train.shape', y_train.shape)\n",
    "\n",
    "# reshaping the inputs\n",
    "X_train = X_train.reshape(60000, 28*28)\n",
    "# normalizing the inputs (-1, 1)\n",
    "X_train = (X_train.astype('float32') / 255 - 0.5) * 2\n",
    "\n",
    "print('X_train reshape:', X_train.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. Define model\n",
    "\n",
    "#### Generator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:53.879232Z",
     "start_time": "2018-09-20T13:03:53.574362Z"
    }
   },
   "outputs": [],
   "source": [
    "# latent space dimension\n",
    "latent_dim = 100\n",
    "\n",
    "# imagem dimension 28x28\n",
    "img_dim = 784\n",
    "\n",
    "init = initializers.RandomNormal(stddev=0.02)\n",
    "\n",
    "# Generator network\n",
    "generator = Sequential()\n",
    "\n",
    "# Input layer and hidden layer 1\n",
    "generator.add(Dense(128, input_shape=(latent_dim,), kernel_initializer=init))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Hidden layer 2\n",
    "generator.add(Dense(256))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Hidden layer 3\n",
    "generator.add(Dense(512))\n",
    "generator.add(LeakyReLU(alpha=0.2))\n",
    "generator.add(BatchNormalization(momentum=0.8))\n",
    "\n",
    "# Output layer \n",
    "generator.add(Dense(img_dim, activation='tanh'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Generator model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:53.885641Z",
     "start_time": "2018-09-20T13:03:53.881142Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_1 (Dense)              (None, 128)               12928     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_1 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_1 (Batch (None, 128)               512       \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 256)               33024     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_2 (LeakyReLU)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_2 (Batch (None, 256)               1024      \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 512)               131584    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_3 (LeakyReLU)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "batch_normalization_3 (Batch (None, 512)               2048      \n",
      "_________________________________________________________________\n",
      "dense_4 (Dense)              (None, 784)               402192    \n",
      "=================================================================\n",
      "Total params: 583,312\n",
      "Trainable params: 581,520\n",
      "Non-trainable params: 1,792\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "generator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Conditional G model\n",
    "The prior input noise $p_z(z)$, and $y$ are combined in joint hidden representation."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.159513Z",
     "start_time": "2018-09-20T13:03:53.888228Z"
    }
   },
   "outputs": [],
   "source": [
    "# Embedding condition in input layer\n",
    "num_classes = 10\n",
    "\n",
    "# Create label embeddings\n",
    "label = Input(shape=(1,), dtype='int32')\n",
    "label_embedding = Embedding(num_classes, latent_dim)(label)\n",
    "label_embedding = Flatten()(label_embedding)\n",
    "\n",
    "# latent space\n",
    "z = Input(shape=(latent_dim,))\n",
    "\n",
    "# Merge inputs (z x label)\n",
    "input_generator = multiply([z, label_embedding])\n",
    "\n",
    "# Output image\n",
    "img = generator(input_generator)\n",
    "\n",
    "# Generator with condition input\n",
    "generator = Model([z, label], img)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Conditional model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.165817Z",
     "start_time": "2018-09-20T13:03:54.161509Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_1 (InputLayer)            (None, 1)            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "embedding_2 (Embedding)         (None, 1, 100)       1000        input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "input_2 (InputLayer)            (None, 100)          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "flatten_1 (Flatten)             (None, 100)          0           embedding_2[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "multiply_1 (Multiply)           (None, 100)          0           input_2[0][0]                    \n",
      "                                                                 flatten_1[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "sequential_2 (Sequential)       (None, 784)          583312      multiply_1[0][0]                 \n",
      "==================================================================================================\n",
      "Total params: 584,312\n",
      "Trainable params: 582,520\n",
      "Non-trainable params: 1,792\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "generator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.220285Z",
     "start_time": "2018-09-20T13:03:54.168384Z"
    }
   },
   "outputs": [],
   "source": [
    "# Discriminator network\n",
    "discriminator = Sequential()\n",
    "\n",
    "# Input layer and hidden layer 1\n",
    "discriminator.add(Dense(128, input_shape=(img_dim,), kernel_initializer=init))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Hidden layer 2\n",
    "discriminator.add(Dense(256))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Hidden layer 3\n",
    "discriminator.add(Dense(512))\n",
    "discriminator.add(LeakyReLU(alpha=0.2))\n",
    "\n",
    "# Output layer\n",
    "discriminator.add(Dense(1, activation='sigmoid'))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Discriminator model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.225889Z",
     "start_time": "2018-09-20T13:03:54.222119Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense_5 (Dense)              (None, 128)               100480    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_4 (LeakyReLU)    (None, 128)               0         \n",
      "_________________________________________________________________\n",
      "dense_6 (Dense)              (None, 256)               33024     \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_5 (LeakyReLU)    (None, 256)               0         \n",
      "_________________________________________________________________\n",
      "dense_7 (Dense)              (None, 512)               131584    \n",
      "_________________________________________________________________\n",
      "leaky_re_lu_6 (LeakyReLU)    (None, 512)               0         \n",
      "_________________________________________________________________\n",
      "dense_8 (Dense)              (None, 1)                 513       \n",
      "=================================================================\n",
      "Total params: 265,601\n",
      "Trainable params: 265,601\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "discriminator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Conditional D model\n",
    "\n",
    "$x$ and $y$ are presented as inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.261033Z",
     "start_time": "2018-09-20T13:03:54.228145Z"
    }
   },
   "outputs": [],
   "source": [
    "# Embedding condition in input layer\n",
    "\n",
    "# Create label embeddings\n",
    "label_d = Input(shape=(1,), dtype='int32')\n",
    "label_embedding_d = Embedding(num_classes, img_dim)(label_d)\n",
    "label_embedding_d = Flatten()(label_embedding_d)\n",
    "\n",
    "# imagem dimension 28x28\n",
    "img_d = Input(shape=(img_dim,))\n",
    "\n",
    "# Merge inputs (img x label)\n",
    "input_discriminator = multiply([img_d, label_embedding_d])\n",
    "\n",
    "# Output image\n",
    "validity = discriminator(input_discriminator)\n",
    "\n",
    "# Discriminator with condition input\n",
    "discriminator = Model([img_d, label_d], validity)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Conditional model visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.266849Z",
     "start_time": "2018-09-20T13:03:54.262868Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_3 (InputLayer)            (None, 1)            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "embedding_3 (Embedding)         (None, 1, 784)       7840        input_3[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "input_4 (InputLayer)            (None, 784)          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "flatten_2 (Flatten)             (None, 784)          0           embedding_3[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "multiply_2 (Multiply)           (None, 784)          0           input_4[0][0]                    \n",
      "                                                                 flatten_2[0][0]                  \n",
      "__________________________________________________________________________________________________\n",
      "sequential_3 (Sequential)       (None, 1)            265601      multiply_2[0][0]                 \n",
      "==================================================================================================\n",
      "Total params: 273,441\n",
      "Trainable params: 273,441\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "discriminator.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. Compile model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Compile discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.308285Z",
     "start_time": "2018-09-20T13:03:54.269559Z"
    }
   },
   "outputs": [],
   "source": [
    "# Optimizer\n",
    "optimizer = Adam(lr=0.0002, beta_1=0.5)\n",
    "\n",
    "discriminator.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['binary_accuracy'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Combined network"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.599332Z",
     "start_time": "2018-09-20T13:03:54.310143Z"
    }
   },
   "outputs": [],
   "source": [
    "discriminator.trainable = False\n",
    "\n",
    "validity = discriminator([generator([z, label]), label])\n",
    "\n",
    "d_g = Model([z, label], validity)\n",
    "\n",
    "d_g.compile(optimizer=optimizer, loss='binary_crossentropy', metrics=['binary_accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:03:54.605551Z",
     "start_time": "2018-09-20T13:03:54.601261Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_2 (InputLayer)            (None, 100)          0                                            \n",
      "__________________________________________________________________________________________________\n",
      "input_1 (InputLayer)            (None, 1)            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "model_1 (Model)                 (None, 784)          584312      input_2[0][0]                    \n",
      "                                                                 input_1[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "model_2 (Model)                 (None, 1)            273441      model_1[1][0]                    \n",
      "                                                                 input_1[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 857,753\n",
      "Trainable params: 582,520\n",
      "Non-trainable params: 275,233\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "# prints a summary representation of your model\n",
    "d_g.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 4. Fit model\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:42:41.784490Z",
     "start_time": "2018-09-20T13:03:54.607912Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 1/100, d_loss=0.699, g_loss=0.904                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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AB5++GGg3ulKcZOQ1H3jOIW0nVvPRO5571alZdsac5Lwfjs5NfS8884LlFXxOWcH/db11TlJ5FTa3apnhavsNJa9OriEk0QQBEEwxzJhCaqO3Mp/6aWXBmDxxRcvtt10001APsvEhhtuWNp/5513Ltp++9vfAnD00UcX27bccksgZYGQ4R9g/vnnB2DFFVcstk2fPr2XSypoasU/MjKSjQgfZxVXd6zsb4AFFlig7fd9990HwNxzz120qR9atQF8+tOfBuCjH/0okEIIIK3aXGrQPX/ooYeA+ohzv6Z+pzrKrViF91Hj4VKV+qj56aEOVVfvnOuv37eq8T8n+bpTS9X12ffXNeWkmSZW/HXj6f2oai26RfPMx1NjoGvS/yGN48ILL1xsk6OO3hk+16WlyYVN5FyiO2hTGpWgOpGba1XqJOhutUrC712dBian4cmFp1TPnZP8Q4IKgiAI5lh6djN3fa7/391BhfSUvjLR1/m2224rtikv0xJLLAGUpSRJOLvvvjuQbFgA3/rWtwA45JBDim1HHnkkkFYgH/7wh4u2s88+G4Bf//rXxTYdT66Xe++9d9H26KOPtl1T01RXnbkVR1XPnpNEfJvGPReoKFdQSZP6P8Db3/52AH70ox8V20488cTSMfR3kFZ3jzzySLFN97e6UnWqEmPTiVb9nDkbqVbg6rev0iUh+jz7+9//DsArX/lKoLx61G9JjG4zWWihhQD461//WmzTvazawfxYnXKZCY3j7AyzqEo4kOZbToLS9brG5IEHHij9Xc6tXmP373//u2h717veBcDll19ebJNG5u677y6db7y+aqxyz9LsTMKay7npSCuhZ8xtPjk7r37r+VxyySWLNs2/J554AkjPOcD+++9f+hfgT3/6EwD/+te/gLLE2o3dMCdd5wJ1uyEkqCAIgmAgiQ9UEARBMJD01UlCYr3UHwBf/OIXAbj99tuLbddddx0A1157LZBUKdBeOsLd0yXCSw0FcN555wHw5je/GYDvf//7RZtEXakPIBn/lT3BnSaktsyJs03mjnNyxvBuymy4GK5+ywgt1SnAH//4RwB22mknILnxQxqrtdZaq9imeyfngfXWW69ok4rMM09Us1bkco759cw999w888wzzJw5szGnk05zujqeyvMIyejuammNrVQkcq+HNH9e9apXAXDSSScVbXfddReQ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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 2/100, d_loss=0.676, g_loss=0.852                                                                                                                      \n",
      "epoch = 3/100, d_loss=0.670, g_loss=0.820                                                                                                                      \n",
      "epoch = 4/100, d_loss=0.686, g_loss=0.800                                                                                                                      \n",
      "epoch = 5/100, d_loss=0.670, g_loss=0.790                                                                                                                      \n",
      "epoch = 6/100, d_loss=0.680, g_loss=0.808                                                                                                                      \n",
      "epoch = 7/100, d_loss=0.665, g_loss=0.798                                                                                                                      \n",
      "epoch = 8/100, d_loss=0.664, g_loss=0.819                                                                                                                      \n",
      "epoch = 9/100, d_loss=0.660, g_loss=0.830                                                                                                                      \n",
      "epoch = 10/100, d_loss=0.645, g_loss=0.806                                                                                                                      \n",
      "epoch = 11/100, d_loss=0.631, g_loss=0.834                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztnWeYLEXZhu8lKwclZziA5IySwweCBwQJAioIkg6IqCBBAQH1wgCXgoCASpAMShRJomSQHA4ioCA5x0OWoAj7/cCn+u3Z3tmenZndmsNz/9m+qmZ7eqqru+rNff39/RhjjDG5MdloX4AxxhhThRcoY4wxWeIFyhhjTJZ4gTLGGJMlXqCMMcZkiRcoY4wxWeIFyhhjTJZ4gTLGGJMlXqCMMcZkyRStfLivr2/U007MNNNM6fill15q6X8/9alPATBhwoS2r6O/v7+v3XPkMJ654PHsOBP7+/tnaecEOYxnX18xLUY5603b4wl5jGku1HnmW1qgcuBzn/tcOj7ttNNa+t/bbrsNgMknn7yj12RMhjw+2hcwGHr+3nvvvSE/O+WUU6bj//znP127phpkO56TMn2t7Eq8+hd4x99ZPJ7DZ4455kjHzz77rA4n9Pf3L9/OeT9s4znEwtn2eMKHb0ybUeeZtw3KGGNMlniBMsYYkyU9Z4PqBB/72MfS8euvvz6KV5I/k032wR7m/fffr/V5GbV7tYxLL15/UOv1FDPPPDMAEydObOn/uuU4UccmZkYWS1DGGGOypKclqPPPPx+AzTbbLLXNMssHnqAvvvjioP/3YZOamu04JSFBISVVtdWl1R1tX19fVtLKcK+lrqSp88d78mGlSnL6whe+AMB55503oK9Kur3lllsAWHnllbtxiZMkGbnuD4klKGOMMVniBcoYY0yWtB0HNZpG5WmnnRaAN998c9DrWX/99VPfNddcA8C///3v1Dbc684tbieK7VNM8YHm9t133x3y/2LQsozWr7zySmqbYYYZADj22GMB2G677VKfMnNoXNsht/Ec4nvS8QILLADAPffcA8BHP/rR1Df99NMD8Oqrr6Y2qQL197///W+3LrMrcVCaW/G65XQk1fmyyy6b+u66664B59X8WnTRRYHyM/j8888DheNHjPF67LHHAJh77rlTWwzkBVhppZXS8dVXXw0UcxjaCvbt+Tioqjiv66+/HoA11lhjyP9r/N92cRyUMcaYnqVtJ4kqo283pKkq5wdJTmPGjEltH/nIR4Bip3ThhRemvuOOOw6AnXfeObXpf+tIGyNJq+MZP6Pf0sxw3zhOAG+88QYAV111VWpbZZVVANhtt90GfP7OO+8Eil01wLhx4wD405/+NOhvGg1pO35nMwcF7bajFNnIiSeemI632WYbAJZbbrkB31P1bMw///wAvPbaa0DZIaUqt2Srbv7dpkria3Q6qpKallhiiXSsMdZuPI6BiJKTmG+++Qa0Nc6leH1zzTUXAFNPPXVqG+V0SU1ZffXV0/ENN9zQ0v/WmSca76233jq1rbPOOkBZEm18F46m+70lKGOMMVky4rn4qnTYzZhuuumAYncfpaUtttgCgN/97nepTTuJpZZaCih0rPG7I9pRaZdV18U6Z5uJdkNVUqF+n+57vP+77LILAEcddVRqa0ysG6WHr3/960B5nCYVm15E8+ZHP/oRAAcccEDqm3POOQF46qmnBvxflQT1hz/8AYC1114bgBlnnDH1dVhKyioXX5VGQH//8pe/pL611loLKCQu2fbiOS666KLUttFGG5W+J75XJKXKtgoDJY0qaXqQOdzzNijNtSgtPf74BzlwZ5ttttSmcWs2Ntddd11qW3PNNYd1PbZBGWOM6Vm8QBljjMmSEc8k0apbrYx4Uo1EI6ccIGIRw9NPPx2Am266adBzRqPfVFNNBRSif1RpjYRhuhuZFHS+Kjf8xt8UxXg5okQVgKL9NS5VDibx/I3nzT1SfTCiqleOH/vvvz9QHsN777130HPst99+QNnp5B//+AcAb731FlCoCAFWXHFFAC644IIB15GLk8RwaeY8Eh0o1KfabVVqpqjW07yUC/o888yT+j7+8Y8DsOmmm6Y2ufwrNKJX5ye07kj1yCOPAOW5pPkntV5E74Eqx5Ko1mt0VuvkmFqCMsYYkyVZ5uK7/PLL07F2r9pxyj0a4JxzzgHgkksuSW177rknUOyUYpCeqKqoKwNiq5mV26UbOzhJqXWk1SgpyD24yvV8gw02AMrSapVbdK9LTpobMZi7MRhUkiYUY6B59swzz6S+iy++GIAXXnghtWl+SbqNn4/nFePHjwfghBNOaPWndJVWd+9xDL/xjW8AxTyLz7SIAc+NxDHTOY4++migXKlg9913B2DJJZdMbZNSHs5WnzG56d9///2prVk4hYKlH3300dQmqXTBBRds+3rqYAnKGGNMlniBMsYYkyUjHgdVRWNsVNU1qU/GUChyfsm4DIX4qpxeVTE6UYW47rrrAgPjoYaiW3E7VfmyuklU1Xzxi18EingfgNlnnx0o8sp1i9GMg5LaAuCII44ACtXa/85b+nw7qoxpppkGKFRe8T7r3kutGtuGMR+6GgfVTuYYqZWq1O9CKv0HHnggtS2zzDIA3H333ant2muvLf1VCZ5IVGkttthiLV1rYFTjoNrJh6eYJTk21L13+s7vf//7qe3AAw8Eyu9Vna8xxnIoHAdljDGmZ8lCglLerQ033BCAY445JvXJoHrrrbcCMGHChNQno19VFH8VWuHjDkS/X+eK7pZVrpfh/7LNfNAKkiABfv3rXwPlqHJl63755ZeB7kl2ozmeDz/8cDpeeumlAXj77bdTm3aLkrSazYsqlK8P4OyzzwZg++23B4r8kFBkTbniiitSm3IhDoOuSlBRopZDkjLdn3rqqamvKrehJCE5O8T8msr6oIwlG2+88YDvjk48ChORU0Wcn9rZR4cXOflUOfiIQbLJ9Gwmifvuuw9oXXr85je/CcAvf/nL1FblBDXc4puWoIwxxvQsWUhQ0hEr03N0SX3yySeBwg08BjYqB19jPq6hiL9Zuahke6rKojzIObKVoOq4euszGnMo3MwXX3zx1Pb0008Pea5OkPN4VnxPOm60a0aJVLv7HXbYIbVJWlMg+cILL5z6VF8r5jtcfvkPNu3SHLRwH7LKxRepCiAXO+20EwC/+c1vWjqnglAl8UNxn6Lduiojek26LkE1ywMaa2DV0RhJGwKFJCSbUt1kCSuvvDJQJEkA+POf/wyU5/RwsQRljDGmZ/ECZYwxJkuyUPFJ5JQIGt1+Ffm99957A3D44YenvsYofqinAjn55JPTsYzVt99+O1CItdC75TakKqgq/a7x0VhHY7HUnSpOCEW5Eqv4qpGK7oknngDgnXfeSX1Sh0QVicIf5A4dwxp0n1RyAgr36WHQERXfZJNN1nIewFjWpkqdpN8s9XEs1CeD/nCRMw8URSSrVGLDyG3YU04SsYyLnFjq/mY5nFSpYPWu1TnbwSo+Y4wxPcuIS1BaneNOU66hN998MwCrrrpq6lN+Mrn21i3Z3MwlOBq5ZUxU8b265LzjbzRCx9+rHZB2/rE0u/KYVeUqbEbdIo/NGI3xrFs8c7j5BTUucQevuT527FigPF76fHSciEGmLdL2jn/55Zfvv/322ytLstdFTgtyYoBifsV3gKgqKtoKMe+hciHK8aJNspag5PYvZ5ojjzwy9cUCpIMRtVByKtH7IM57SbvNqkXUxRKUMcaYnqUr2cwbd/Cf/exnU9+NN94IVO+eVltttQFtCuKT3rpumg4Fl+26666pTXpT2QugbNMajHbSunSSujv5Rt1x/Lx09GeeeeaA/9NuvlWJqFdrFdV1t23lnsd6RJpn8f/lLrzXXnsB8POf/zz1KdN5dPNvhlx9o021k0yYMGFY0pPc66EsOQkF395xxx1A2e7bjGYBoQqsjkHmrWoCRCc0At2kKv2V3m2LLrooULY777vvvkAx1+JvUlhNdL+PGeGhPO66t7FNx90YK0tQxhhjssQLlDHGmCzpqpOEHCJiXjOp9qIx9F//+hdQdi8fLjIWyo33M5/5TOqTYS9+z0orrQS0XsgsFyeJuob+RnQfoqpVrqmxnLPcnD8sbuZSVyyyyCKprdFRoUrlW5XJWQ490Ug911xzAfDTn/4UgL/97W+pTw5BUT3TrKDcEHQsk0QnVNzNcrdFlaDmo9RYdb9Paqn4HOu8dR2rhmBUnCSUOzC6de+3334AHHzwwalNGXdmnXVWoPx+VX5D5T6M4yFzTJxzGnvN6Xh/pMbrhDrPThLGGGN6lq6WfNcqG3dBqvMSJZuYoXwwqhwElLNPWaChcCuXMTpKb/q8SsVDseNaZ511ALjqqquGvI6cypm3KjnJTfS5554Dypme9buuueaaWudq5rTRq6Xfdb0xw7nGQ3Vxrr766tSn3anmXbwf2onKISKyxRZbDPi8NAn33ntvapPjkALJJfGPJJ24h80cHOKOvlWnDJWLl1Shv43nrXNdOc5VzavoEHHaaacBRfICKDKVa+4stdRSqU9OapKq4rkeeughAO65557UtummmwLwk5/8BCg7sdxwww1t/Z5WsQRljDEmS7xAGWOMyZKuOElITN98882BskpNRt+YK6oVYjp9xVioTDfAIYccAhTxED/+8Y9Tn8TfH/7wh6mtKh6rGdNOOy1vv/027733XhZG/SHOD5QNpsq3J9VUVDHJ0CxDKxSGVRFVMDpvJ4zQuThJSC0XjcbDLcgmqgpkysCt+Qow++yzA+VyG3JYUfmJrbfeOvXJgD7IHB61chtV2TG6hYz8t9xyC1CUJ4Gy+roDZJNJQureFVZYYUCfnJqiA4VyQmoeSy0KxbMb55CySsgcoyKeACeddBJQlIYZijFjxgCF+jpiJwljjDE9S1fdzOsUzBsKReZrJ1+1G/3ud7+b2g466CCgcIjQrhTg2WefHfDdbbjNjviOv1XHA30+ZtOI0iYUrs0Ab7zxBlCWqhq/M2bf1u6r2fXUjcrPRYLSb4llruP4QTnqXi7o00wzzYBzKXN5LOGusuhVYyHpLe5w5aI+fvx4oKW521UJKl7HVlttBcApp5wyoE/zJT63dcquN0O7cigyv19yySVAZ0qRD8KoSlBxzkkLUve507xqzDYBhXPFlVdemdrkwKMQCM1jKLLUtKp5qsISlDHGmJ6lbTfzqkDRuOI2oqCvqp213Bsvu+yy1CfJSfaRJZZYIvVpB6GgRygCddUnqSmSozupaCYl1d0x6XPSz8dAu2WXXRaADTbYABg6EFTn0q43lohXLrUqmpX1zo14jSrdHqWmu+66CyjG7oQTTkh9kiL1N4Y8aJe5zTbb1LoOSRlRXy/JSURJLYZQjBRyR45uzLKJ6F2gew+FHSNK3soHqTm7++67pz5J+AoTiZngZReUdgSKjOWSoDosNWVDtD1KS1RF1bjp/apnN2Z81/tVOfmgyNOpsYz5DVsNa2kXS1DGGGOyxAuUMcaYLOmKk4TcOxWBv95666W+Sy+9FCgb6pTFQUY8ZTn433cCZTWVOOOMM4D6KpROMppG/Sr1aFQt7bPPPkDZXVlIhSJjfSxJIHVfLBkhtZPyKsbyCZ1Mrz8a4ylVVFSHSJUZjfqNqKAbFMZrPUex2KZcnztJLCxXpZ4NKveuOElIDX/BBRcM+LzGoO47Req/T3ziE6lNz77uQ1R3SrUnZ54q4nxuNj+HoYIeVSeJmEHk1ltvrTovULwbDjzwwNSnDCh657ZaBDPen1iqSKy99tpA2TRTBztJGGOM6VlGxM28yvUz5huT48O5554LwJe+9KUB59BOZ7nllkt92s0deuihA87/Ycm+XVW8TCgvmXJqQWHklCtz1S4zSmjaaWrXGo30cgKIBvDhBkeOxnhq7Oacc87UpqzQcrUFOOuss4Y81yqrrAKUpaZm92YE6KqbeZwH+n077rgjAMccc8ywv7PRwSoa6CVNPfjgg6lN7wNJjjFAVYX6YlIAOWg0YxBX/hGVoBrz5lW9z6Izit6P0qREKVOhJCr+WhfN35jZ/4EHHgA64yxhCcoYY0zP4gXKGGNMlnRVxTdu3DigXJ5AomHM39boAPHoo4+mY0UzqyzG9ttvn/pGM56p2yqpGOuh+I+qdPmKBI9jJjFcEfeKDYNCtXr00UcDRY43KMYzGpr1XbpHUbTvdSeJ8H/xOgb0N6o3Y/E4xedFNWcmdFXFV6W2l3opPs8TJ04E4O67705tSy65JNDZPH3N4p9ithSpuYZhChhRFV+zYot6N8R8kc1QjFNVTGgzdH8UYwbFO2jddddt6VxVWMVnjDGmZ+mqBCUX3OiWq938lltumdqOPfZYoHBljijP16mnngqUdw1a4Tu5k69LLk4SImYsl/F0p512AsqOCyuuuCIA2267bae+umdzG9allXlWN/dgFR128OmYBHXyySenth122GHI/4u58lTRQJlLoHDFV9aDZsSxkAPL2LFjU9tuu+0GFBqBLpJNNnPR6lyTBqCdPHp6R8dzDPf9awnKGGNMz9JVCUrUXemlz5e9qeG7gfq7y3nnnReoDizrBLnt+KOdSQF5yiFXRdUuqk4J93gv67hP15WuchvPulTlosyEUasHFe+5AvPXX3/9AZ+ba665AHj66adTm0rcK7/mGmusMZxL6AbZSFCSYhZaaKHUJlt9J6l6H3RSyrcEZYwxpmfxAmWMMSZLRkTFN8i50nHjNajwGZTdynMiN5VUVYEyqVM7kcmg2w4puY3nJMCIqfikclJuvVhwcaRKgoxA1o5sVHwjRQ7PvCUoY4wxWTJqElREgZAxI3f4TiC/IoO9tOOPuQr33nvvkfjKlu9bL41nJ3IPjgCj5iQxFFXhJz3Ah06C6jaWoIwxxvQsXqCMMcZkSRYqvk4i9Uu3VS+9pJLqBTyeHSdbFV8nkYOGMlWcd955TT+vLBSPP/54q1/VUyq+0XBUaRWr+IwxxvQsrUpQLwItbz0mQcb29/fPMvTHmuPxTHg8O0/bY+rxLOE52llqjWdLC5QxxhgzUljFZ4wxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJku8QBljjMkSL1DGGGOyxAuUMcaYLPECZYwxJkumaOXDfX19/d26kJyZbLJiHX///fcB6O/v72v3vDmM50c+8pF0/Pbbb4/adUwq45kRE/v7+2dp5wQezxJtjycUYzrFFMWr97///W+7p+0oSy65JAD33nsvAJ/85CdT35133jnk/y+22GLp+L777hv0c3We+b7+/vpzsK+vr3+KKaYoDahe3npxV1H1go9MO+20ALz55pu1ryUyGjfbL9TO0q3x3HbbbQE466yzUtt//vOfQc/x0Y9+FIC33nqr3csZbSb09/cv384JPD9LtD2e4DGN1HnmreIzxhiTJV6gjDHGZEnLKr4uXgt9fR9IfK1cU7tIPTj99NMDMHHixFr/Nymr+B5++OF0PH78eACuu+46oLhH0Nn71Knx7OvrG9H508g222yTjk8//fRhnaNDY5yFiq8bz7SeVYBXX321Y+cdgp5X8Y3G+7UZVvEZY4zpWUZEghrKSaJdpplmmnT8zjvvADD33HMD8NRTTw24jmbXMN1006XjN954Y9DP9boEtffeewNw6KGHprZmc0GeOffff39Xrifn8WzmxJPbrjSQhQTVDbolxQ9Bz0pQY8aMAeBf//rXoJ+Zaqqp0nEzJyLRiXtgCcoYY0zP4gXKGGNMlrSt4uuEimPyyScH4L333gOaq9mqRNHnn38+tUndN/PMM5fODbDnnnsCcOyxx6a2V155pXT+uqJrziqpZkjNqbF++eWXU59UnzPMMENqm3POOQFYZ511ADjzzDO7cl29Op4jzSyzFLGiL774YrOPThIqvhgk+re//Q2AGWecMbXNNNNMAPzzn/8Euqry6ykVX4wN/e53vwvAn/70JwD++te/pr5m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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 12/100, d_loss=0.611, g_loss=0.884                                                                                                                      \n",
      "epoch = 13/100, d_loss=0.634, g_loss=0.865                                                                                                                      \n",
      "epoch = 14/100, d_loss=0.600, g_loss=0.953                                                                                                                      \n",
      "epoch = 15/100, d_loss=0.645, g_loss=0.898                                                                                                                      \n",
      "epoch = 16/100, d_loss=0.652, g_loss=0.869                                                                                                                                                                                                                          \n",
      "epoch = 17/100, d_loss=0.653, g_loss=0.825                                                                                                                      \n",
      "epoch = 18/100, d_loss=0.656, g_loss=0.866                                                                                                                      \n",
      "epoch = 19/100, d_loss=0.692, g_loss=0.869                                                                                                                      \n",
      "epoch = 20/100, d_loss=0.649, g_loss=0.849                                                                                                                      \n",
      "epoch = 21/100, d_loss=0.658, g_loss=0.800                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 22/100, d_loss=0.655, g_loss=0.906                                                                                                                      \n",
      "epoch = 23/100, d_loss=0.668, g_loss=0.856                                                                                                                      \n",
      "epoch = 24/100, d_loss=0.670, g_loss=0.853                                                                                                                      \n",
      "epoch = 25/100, d_loss=0.658, g_loss=0.829                                                                                                                      \n",
      "epoch = 26/100, d_loss=0.664, g_loss=0.884                                                                                                                      \n",
      "epoch = 27/100, d_loss=0.641, g_loss=0.899                                                                                                                      \n",
      "epoch = 28/100, d_loss=0.645, g_loss=0.906                                                                                                                      \n",
      "epoch = 29/100, d_loss=0.664, g_loss=0.861                                                                                                                      \n",
      "epoch = 30/100, d_loss=0.645, g_loss=0.851                                                                                                                      \n",
      "epoch = 31/100, d_loss=0.658, g_loss=0.891                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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CcoYY0yWeIIyxhiTJZ6gjDHGZIknKGOMMVniCcoYY0yWeIIyxhiTJZ6gjDHGZIknKGOMMVnyuWZePGLEiJ52XUi30dPTM2Kw5/B4Fng8W85LPT09Mw/mBMNxPOeff34AHn300Wb/ddDjCcNzTAdKI7/5piYoY0zX8ESn3uib3/wmAFdffTUAI0YUz52enr6fx1NMMQUA7733Xq8+naPe/w+EAUxMomPjORz54he/mI7ffvvthv/PLj5jjDFZ4gnKGGNMloxoxoTulP/0S1/6Ujp+4YUXOvGWTTOcYyY77rhjOj7rrLMA+OCDD9r6nsN5PIeIu3p6epYZzAlaMZ5TTz01AG+++eZgTzXUDHo8YXjeo5///OeB5p8RjfzmbUEZY4zJkixFEs1aTZNOOmk6/tznPv1I77//fkuvabgx/fTTA3DKKaektk033RSA5557LrV9+OGHnb0wM6xoh+UURRhavVf93vVc0GsA3n333dJrXnrppXQ800wzATBy5MjUNn78eAA++eSTwV72kDPJJJ/aI1/4whdS21tvvTXo87bTu2ILyhhjTJZ4gjLGGJMlWbr4nn/++XQsc3vChAkAnHfeeanvy1/+MgC/+c1vUtscc8wBwJFHHgnANNNMk/pefvnlXu917733ArDEEku05NrbgdwSU0455aDPJffIq6++CsBRRx2V+uTGGD16dGp79tlnAZh11llL/w+tz1Exnw3khv/oo48AmGyyyVLf9ddfD8C6664LlF3Muj/1/7Ff7qvoivv444+B3m69iNx6kXvuuafRj9JVaGyiW0+/Z40fwLXXXgvA2muvDZS/n067/G1BGWOMyZIsLCjN4rJipp122tT329/+FoC77roLgO233z71aTaPgc711lsPgBtvvBEoLCQoMpi1SoOyBZErrbCchFZKsqAkAwZ47bXXgHIQVZbTGWecAcAJJ5yQ+u6///6WXVe3okC8VuumfE9ViSQ0VmPGjAFg7Nixqe/EE08EYL755gOK6hQA8847L1Be0Uvso3u3UaInQMgjkKOXIArBmr3XqqxLoc8Xz7nZZpuV/m8ohVK2oIwxxmRJxxN177jjDgD23nvv1CaL5vLLLwdgnXXWSX0HHXQQUKysfv3rX6e+zTffHCj7mI899lgAllxySaBY+UOxGnviiaKs1le+8hUAnnzySaCcJKz6UVW1ozqZ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Y4wxWdIykUQVytI+7LDDUptqecVNzWqJeThy0cnsjIFnufbktgL4/e9/DxTl+qNLMW5+Jro1WF1LFCpo+4uxY8cCZfefRBGqcnDaaaelPlXkiC7QpZZaCmjtRmXdThRE1G50KTcKdO6eigHuVjJ+/Ph+3XsAN99886DeJwbhtU2EqjrErR5UK0/1MwG23XZboBBVxBp0qksXvwdVsml008nhgD6/thaK27/ITa9tN3LDFpQxxpgs6Ug187g1sYLK0YI64IADAHj99dcBGDVqVOqTHFQruViBYsyYMUB5C/f55psPKFZSUSTRCitgkkkm4ZNPPskmqF9lAdau6qs2XFSljc0333ywl9ASchnPRohjXbs9dtzafKAikmihDaLqeccqSdQSaznGGm+NIMl5lWxf437GGWekNm1oqHqHqusZr6NFlmzXiiSUWjJhwgSgnFqi1J6YftIpy98iCWOMMV1LW2NQStC95pprUpsSdWNV51122QUoVv6xIrGsHv2N8Sn5otddd93UFiXtUF4tyJIYzF48HdiquymqVju11xjrk8ly1f5XcXyarZum87ZSbp4zkk9X1S/U/dmKsejAXlFtpVmrKaL78vTTTwfKXg/Jy3/xi1+kNnlPNO7xXleS/4033pjacvv9dgLtFaWxmThxYurTGOUag7cFZYwxJks8QRljjMmSjogkqogVDAZrdleJABopPz8YOhnUr6r6MNzIWSQhN6gC+NEtKtfS+PHjgaxqvA2ZSKJZYoBeYijJxuPzqepZJXdVbY1J6C0WqiJugx4rLFTQVSKJ+KxQjURV14kuPoVcVHWjk1gkYYwxpmtpq0iiHq0MVg60um+3MJwtp1yJVrksprXWWguA66+/PvXJgopCnc8aqsU30ITduKLXscQ82hEBijp9EVlOtZsmQmPPmH6spq4lPhMlLhk3bhxQ3tpegpwoLslJ9OQnnzHGmCzxBGWMMSZLhkwkEVEduVhTb7DMMcccQJEp3WpyDup3I8NlPAeTV9Zi2iKSaEftyiqRU7vR9xS/o37y+rpKJFGPk046KR0r72wosEjCGGNM19KsBfUi8ET7LqdrmKenp6fvcuwN4vFMeDxbz6DH1ONZwvdoa2loPJuaoIwxxphOYRefMcaYLPEEZYwxJks8QRljjMkST1DGGGOyxBOUMcaYLPEEZYwxJks8QRljjMkST1DGGGOyxBOUMcaYLPl/SbcElv/N3CYAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 32/100, d_loss=0.648, g_loss=0.881                                                                                                                      \n",
      "epoch = 33/100, d_loss=0.677, g_loss=0.832                                                                                                                      \n",
      "epoch = 34/100, d_loss=0.675, g_loss=0.865                                                                                                                      \n",
      "epoch = 35/100, d_loss=0.668, g_loss=0.892                                                                                                                      \n",
      "epoch = 36/100, d_loss=0.646, g_loss=0.852                                                                                                                      \n",
      "epoch = 37/100, d_loss=0.647, g_loss=0.825                                                                                                                      \n",
      "epoch = 38/100, d_loss=0.669, g_loss=0.849                                                                                                                      \n",
      "epoch = 39/100, d_loss=0.684, g_loss=0.853                                                                                                                      \n",
      "epoch = 40/100, d_loss=0.677, g_loss=0.853                                                                                                                      \n",
      "epoch = 41/100, d_loss=0.651, g_loss=0.867                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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4V577bUAbLbZZkD5kF6ih2mnnbZo03io7aWXXir65CqJ8//uu+/ucN/a++cmnPjss8+Ka+V3rHKt6TBermWAySefHEjuzpgXUu5TzS2AWWedFUguweiCWmCBBQDYcccdR/mscrVC3xIARfGT5q3mVxxTiaVuvvnmDveQ2/qVV14p2l588UUAFlxwwaJNQpXewBaUMcaYLOnXmd1Xb1WD1Gqvf+vttOPOQM8eZbw6wL7//vsBmG222Yo+7bx++9vfFm0SC+y2224AzDDDDA09cztUgJ1sssmAdBAKaRelnZCku5AOlVth6eQ2nnGeTTfddEAal4UWWqjo+/LLL0v//vvf/y765p13XgDWXXfdou2www4D4PLLLwfKFu3QoUMBWGWVVYo2WRKyuN54441Gf4VHR44cuUSjL66iJ8ezKiBZQbYTTTRR5etq2WKLLYBktcZ7VH2PSTAhKy7SBSl1t8cTWlNRt953/NFHHw3ACSecULTNMcccQLJK43fi2GOPDcCuu+5atJ144omjfZ9RPNdoP/O2oIwxxmSJFyhjjDFZkoWLT2b9fPPNB6SDO4CTTz4ZSOa9TFKAYcOGAck1BbDkkksCyW1w7733Fn0DBgwAymb9TDPNVLrvU089VfQdd9xxo3zm3FxSER0ca8wOOeSQDq+ZffbZgXK5jVZGjuc8nrfddhsAM888M5DGDuCYY44BYI011gBgzTXXLPo0t5TPEOB3v/sdAL/+9a8BuPDCC4u+448/vvQ+8XVdEEJk5eJ76623iusZZ5wRSK6+qhyQIrr8qsbgzDPPBOCSSy4BUqaU+LP17t8J2sLFJxecXMNQP/+gBBRRyLPWWmsBsPPOOwPlOKgJJpgAKIteNM4SuzWKXXzGGGPalixk5jqE23///QG4/vrriz5JROeaay4AbrrppqJPh9CLLrpo0SZZurIhRBHAqaeeCpQP+O68804gCSfiTq+diLtEyUi1A4pIDi05btWutF7Uf7zn3//+9248cXPQ79JoBgHtQKeffvqiTdLnF154AUhzEWD77bcHkugk5n2TPPfqq68u2jbYYIPS6+POVfeKz7reeusBcM899wBlwUsuyPKW8CDmu3v33XeB8vzUGKgtyrv1+dt7772B0VuOU089NZA+xxEJVp599tmiTV6avoasF4l1IrKclKEkWkS33norANttt13RptAT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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 42/100, d_loss=0.645, g_loss=0.883                                                                                                                      \n",
      "epoch = 43/100, d_loss=0.660, g_loss=0.831                                                                                                                      \n",
      "epoch = 44/100, d_loss=0.691, g_loss=0.852                                                                                                                      \n",
      "epoch = 45/100, d_loss=0.650, g_loss=0.852                                                                                                                      \n",
      "epoch = 46/100, d_loss=0.671, g_loss=0.838                                                                                                                      \n",
      "epoch = 47/100, d_loss=0.638, g_loss=0.838                                                                                                                      \n",
      "epoch = 48/100, d_loss=0.662, g_loss=0.844                                                                                                                      \n",
      "epoch = 49/100, d_loss=0.658, g_loss=0.864                                                                                                                      \n",
      "epoch = 50/100, d_loss=0.654, g_loss=0.869                                                                                                                      \n",
      "epoch = 51/100, d_loss=0.657, g_loss=0.857                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 52/100, d_loss=0.640, g_loss=0.831                                                                                                                      \n",
      "epoch = 53/100, d_loss=0.655, g_loss=0.846                                                                                                                      \n",
      "epoch = 54/100, d_loss=0.661, g_loss=0.886                                                                                                                      \n",
      "epoch = 55/100, d_loss=0.651, g_loss=0.871                                                                                                                      \n",
      "epoch = 56/100, d_loss=0.665, g_loss=0.892                                                                                                                      \n",
      "epoch = 57/100, d_loss=0.691, g_loss=0.857                                                                                                                      \n",
      "epoch = 58/100, d_loss=0.660, g_loss=0.839                                                                                                                      \n",
      "epoch = 59/100, d_loss=0.645, g_loss=0.877                                                                                                                      \n",
      "epoch = 60/100, d_loss=0.667, g_loss=0.861                                                                                                                      \n",
      "epoch = 61/100, d_loss=0.663, g_loss=0.874                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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T4+ntVnz2YxrGUH4oKenZ2AjJ+jEfP7qVz/vmX/66ad2f3RfNDyf4Hs0UsszX9cCZZpPLYvTSCONBMCPP/7Yr3MPGND7PtCxss/fdddds9dDhw7t83PKzu9Ft+O82ukLgPoXnAQXJpHEfP7SsIvPGGNMkniBMsYYkyRJuvhGH3307PV9990HwJxzztmpy+k49br2RJnrTZS5/z799FMAbrvttuzYvffeC8Cdd97Z57mMqaRRl91oo42Wvf7mm2/q+r/V3NimO7AFZYwxJkkG1LO76IQCRTuoendPraadqrNGlU3HHXdc9nrHHXcEYL/99gNgl112yca+/vprACaZZJLs2KijjgrADz/8UNNn9fdaO6Hiu/HGGwFYbrnlGv3oFHmwp6dngUZOUO98tsJiid6U7777rtf5xx13XADGHntsAF5//fVsTO9beumls2O33HJLfy+l4fkEq/gitTzztqCMMcYkiRcoY4wxSZKkSCIG7iUQGGOMMQD46quvqv7fccYZB4DPPvus17m6NVhar7tMwoZFFlkEyN0gkZVXXhmA8ccfPzum+fniiy+yY7W69oZ3rYsttlj2+u677y58NsDVV19d1/mbyQjq2msqlYnkU001FVB0pYlmPF8jj/zzT9IEE0wAwD333JONTTnllEAu5gHYbbfdALj22muHew0NuPV+kchNr7ns5O+mLShjjDFJkoRIYvbZZwdgrLHGAnJpOdS/ek8++eQAfPnllwC88cYb2ZgCqZHHHnsMgGOOOQaA008/PRvrQ6bdlaV5qs3nHHPMAcB4442XHbvrrruA8gB4M4LiAwcO5OOPP+b777/vyvlsBauuumr2+sorr+zvadoukmgGCy+8MJA/hxNPPHE2JqsqPpeqsiIauRf7uJ9HSJGEfhM///zzXmOa2+gVaaY1ZZGEMcaYriUJC6qSgw46KHt9yCGHAHk85fbbb8/GFl98caBocUmKKuLqP8ooowDlia/VrKUyOmFB/fGPfwTgnHPOqen92gHFv+37778f7vtlwcY5m3nmmQF49NFHe71f8auPP/64puuptkNNxSLVnD300EPZsbnnnhvIJfeV9xg0Z2cpa+G9995r+FwkbEHpPlBcOUrJn376aSCPG6299tq9/r/SIQD+8Ic/FN4f46f18utf/xoo/37pYgtK9+23334LwCabbJKN/fOf/wTyvz2i9918883ZMd2bOlcj2IIyxhjTtXiBMsYYkyRJuvhi5veee+4JwO9+9zsAPvroo2ws1umq5F//+hcAm2++eXaslvYTtcrSU3FJVUMuFAlGAF555RUApp12WqDozpOZX632X9n86HOgdxrAWWedlb3eeOONe51vo4024uqrr+aDDz5Iaj6j/P7VV3/utCBXySeffJKNyd0k6fzjjz+ejS255JJAUSqt80oqHYP8klhHN5XSJhTEruN5TcLFJ7d6dC1LjKNnNLrsdC9pnqaeeupsTHM16aSTZsdWWGEFAP7zn//0+pwmV7boChef7tEoCNtiiy0A2GqrrYBcbALVK/XoXLr/IXf5awzy35DhuEaHi118xhhjupaOJepqtxg55ZRTAFhxxRWzYwqCXnfddUDRatLraCE8+OCDAAwePBiAnXfeORvT7v7cc8/tdUzEnUFq9f9qRfPy/vvv9xqT5SRiwLTaTlPWVdyhViZFlxGtprIg9Nlnnz3c/9sJtOuOO1AFhMccc0ygKH3W7vH+++8HitaAOOCAA7LXV111FQBTTDEFAOuuu242JhFM/I5k8XaKRjs+637R3AGcccYZQG4lTT/99NmYEsOfffZZIH+OATbYYINe51LQfr311gPgsssuy8ZkdcZE9ZjkOyIh6/LCCy8EYPXVV8/G9P1pbt99991sbJVVVgGKvwMHH3wwkKfoDBo0KBuTkCr+5rYykdcWlDHGmCTxAmWMMSZJOiaSiLp7VXGQAGLrrbfOxm699VYAhgwZAhRdRjLrV1tttexYmeuwFaQsklC7jBdeeAHIzfKI3B8LLJDHfZVr1ojbrb+B6VTmU/dPFIq88847QO6eU+UTyF3EclNFl7Hqw/35z3/OjqlyyUwzzQQU3aP//ve/AZhtttmyY8svv3zh+qKooo9GlkmIJCRoiLly//vf/wC4+OKLgTx4D3D99dcDcP755wPwyCOPZGNy/Q8cODA7dvjhhxfef9hhh2VjciVHt14D7qikRRLLLrssADfccANQvDfkdt5uu+2AYoij7PdSeZYvv/wyUHQJ6v0XXXRRdkxu1r7qpFZikYQxxpiupe0iCe0gYxBaK/RCCy0EwFxzzZWNaWcq8UNcuVVVYs0118yOafVXwPmXgqpqQC7NjYKPSp577rnCv5BbXI1UgO/WivFCgeS4s1QV7bLqzrqPtXuMAXnt+KMQQhJrnUOVoyGf91jtvZI+rKaOor8lzp2sz6OPPjo7JstG8nv9JkAuM7/00kuBXCwBsOGGGwJwxRVXZMdUhUKWWpyfpZZaCiivZ5jyPNaKKstDbo0qRSHWIN19992B3ANQ1i0iis+efPJJIPcU/OUvf8nG9H/jfa57X99FmVCov9iCMsYYkyRtj0FJsht3jvKr61pi3bdNN90UgIcffrjwnvj/Kq6x1/taQSoxExEt0mqy7yOOOALIE6DrJX5v/W1BX0Zq81lm2ZQlemsONDbhhBNmY2+99RaQWxGQV4qXRD/GRyT5vfPOO5vxJ7Q9BiXLKfYQ0zzq74U85qz4p+JHkM+V0kpiYv4TTzwBFJOolQgsy+vyyy/PxpSiEq+nAQ9LcjGo1157LXutuLPk37LUIZ9T3avRWlLSbqyHeMcddxTOqfsSco/WiSeemB2rVhG9Go5BGWOM6Vq8QBljjEmStogkZIZDeSBV5qVMxGiePvXUU0DuCokuEdXy2myzzbJjkq+rcWEMFpYFRuUm7GTQtA7p8HApk5KXEevm9YfoCtDrWF1C30+Zq3WWWWYB4JlnnmnoGtpBmftS93FZkFl8+OGH2etZZ50VgKFDh2bHVBlBQoEoAnjppZd6nV90g/gkutKErjvWL5QwR8IGNSmE3C2nljsnnHBCNjbddNMB8Pbbb/c6v57z+H6lTdx7773ZsRFBPKXfvViTUFVvFlxwQaB8jjTP8TdAgob4/SglYNiwYQDcdNNN2diNN94I5C1ooHcrnkZEVpXYgjLGGJMkbRdJqM6YJM2Q75pUoytWM5e8XImNURatAJ8qGQNMM800AMw444xAMditHXCssScpdrVGfmWkFtSP0s5qVd7rbcyoOdt22217fc5KK60EFKt16/tRHcC+Av5TTTUV77zzDt99911S81lxXiC3GOP9o6CxauZFi0rPVmzupvlUIFoeAigmqDeBJBJ1y1AaybHHHgvANttsk41VJo7Gyu6qdxjvb823kqFffPHFbExpKE0S83RUJBETltVMUwIygA8++ACA008/HSg2ff3rX/8K5JZkFKVobuLvgmTmkvXPMMMM2Zjk/80QS1kkYYwxpmtpSwxqookmyl5rp6ndE+TViS+55BKguFtQVd5YpVhIgrrccstlxyRH33vvvYGiX1xySPXpqRxPgTIZbLU+VqKa1RRl57JgJVEt2/3E3ZH8y4qnRItb1xNLTSkGo++8L4vt9ddfrzqeAooRlqU1aMeuOYvv2XLLLYFiWS/t+JVE2q7SXCmhHbqqZsc5UNmctdZaC8hl+ZB7XZTQD/n9KA+ISqONaMw777zZa1lQUYKv+0pJ5UpxgPy3YfvttwfK+8Pp+YbcC6WSUiqfFGlVukmvz2nZmY0xxpgG8AJljDEmSdoukpDLR22IIQ+kL7bYYgCcdtpp/Ton5HJrmbwyhyGXOUd5prKsZbLWaq62WiRRr9S4bExzEM+lQP8DDzwAFCsQy1WqKtwAF1xwAQB///sqMt5PAAAIsklEQVTfgaJpX+065Ooqq7ownP+XrEhCf7MENVEIUSmumX/++bPXqn2mjHzIBRbHH388APvuu282JtFPrB7dyerbrRadTDbZZAAsuuii2dg888wD5FXcoztPxDnRXMl1HZthNlman0wlCbVdV/V7yH/TFC6JbjxVNzn11FOBotv0t7/9LVBsA3/XXXcB8PzzzwO5qxqaO6cWSRhjjOla6rKgFlhggZ4HHnigbqlyX2hnKqmkqnFDLjPVTrWvJLDKZNAYtC7bwUvaHlse10IqO37J6aN0VMl6ZWjOlIwXd07V3l/rd6526EqSLKskPZzPSWI+q1GWmCyLXcmPEgBAbp1GK3WnnXYC4OabbwaKO/4mJ4snb0HJMo0W1HnnnQfk1bJjAnplzU7I+8PJElCvKSj2PWoCyVhQshYliADYYYcdCsdOOumkbEwiFP1GxPnbbbfdANh///2zYyqYMOeccwLFpN9mYgvKGGNM1+IFyhhjTJLUlYTx4IMPNt29B3mmvSoSxMDooEGDAFhmmWWAPD8Cyl0icu3pOqXph7zWWcxLiRnXKaDrji0FYr5DJcoNUcUNyF18ZW5RvY6B0lquR+7RKJKQ6R9bcCsPSjW7ug25kcryPOSOi65i1R7ccccde51L74tuJwlQ5GYpy28ZESn73ZD7Ls71ySefDMChhx4KFN1Rup9j0F7tNdSePLY2GVF59dVXgWKdUeV/6jcx5ndWPruxnqZankQklpIApZm19erFFpQxxpgkaUsae5nUuKwhnKSlqicFeb0p7dKj1SRxRZm0dKuttgKKwUIF7M8888zs2H//+99+/U2tQtdfzWqKxEaFolIMEjP1VUsv7qJqoUxe/vjjjwPF+ddnN7PtczvR/RXvM2XiSyIeA/eyRHW/xcZ8qjotqT70/m5GZKspEnfeupdkfa6//vrZmJ53jcX77rbbbgOKtR8lCpBYKFYuF7Gbgr7XVlY/aAVlVkyZlVTt79JY9HjIWopzFC2z+HmNXGt/sQVljDEmSdpeCEw12qqtrKqEDbnkUXLzaDHItx/bPB9++OFAvlM68sgjs7FVV121oWtPBfW6grzmlnbwkM+tdkXRGqjXcqrGkCFDgOKuTcmD6623Xk3nGDBgQPK9jmI1cihK85VwLkvqzTffzMYkOX/ssceadi3d2isqovtF8T7V24Q8Pqx/Y/83xZ9VZxN+roYP+TOx7LLLZmN77rknUPxOupW+vuN6LEIVRIj/Lyb2qnZnWaXzateh35t6O0NUwxaUMcaYJPECZYwxJknaUotPze4ATjzxRKAY/JQrRFUgormq5oUK3EUZqZrFxZbDapinZlsxsz82mhMSWlS6cfoilcoHMr+j+1JNxdTkMTZxkwxcf6/qocVzlSEXawywls1nf0llPmshpjooO19CFKVFQC4HLnN5aK5b6J5rWiWJVsmM5RKK7qUYrIfic3nKKacU/oW8goTawasZIsA111wDFCtKxDYUdZJMJYlqyG0a3fo6pmf3vvvuy8Z0TM0godiOqJJm3reuJGGMMaZraYtIQlYT5LLQuAKrWVaZBF3VjdWILEpMJSkdOnRodkxNDxWY7itgV6/llBraHcWGhRKSaGcaExuVCCminH277bYDYI899siOqTq3RABRUv5LRUmk0LsK/i677JKNxVbmlXSTsKFV16q6jdUC/PJwAKy88spAUZau3wPV84sW0hVXXAEURVcjOprLmO6wzz77AHm9Uc07wFlnnQXAsGHDajq/E3WNMcYYvEAZY4xJlLY3LBTRdJcr6ogjjgBgvvnmy8aWWmopIHctxbpmq622GlAMTKuNxBxzzAHkzbeaTcpBfbn41OahrGah5j+6QOUmjO0hFLSWWCXOfzVUI1AZ/n2R2nzG+1NuYFWQUJ5IRPlQqh6RAEm12ygTWqi5Xqz+IHd/WWuNV155Bchbm0BeKUbtImJ7nWr0I2cnOZFEdONV3pNRbKLfQIVL4tj1118PFIU/UbTSSiySMMYY07W0vZKEiDtx7UxVv03WD8Aqq6wC5NaVLCqAtddeGyg27tIuq1WWU7tQW2fIpfNlqPHdmmuumR2T/LtaA7wycYgsp1jjS/LpapZTrE0nOXqtllMKxFqF+tvj/Gj8k08+AYrWgOZY4pxaaYZc97XXXgOKDT5bQVll9zKq/U1lx3S/qdkewGGHHQbAwgsvDMCzzz6bjaluXLweeVaicKUWZDnJioPcg6BUjNQps+TF7LPPnr1WZwRZTlHopHlol9VUL7agjDHGJEnbLSjJnAcPHpwd086rLFFUibYak4U0vPdXEndurehl1QymmGKK7LXqhlWzmiLqkxVr36keXn+JFkUtyGrqVqLFKKJ/v8xyEkoIV+yzVsosirIky2q02nIStdZ56681GM+vXb76tMXam8cffzyQe04gn4NqsaT4vVUm5kfLIVUroh5kBd50003ZMdXfVF1TdSGAvHZpqtiCMsYYkyReoIwxxiRJx2TmnWwj3AxSk0V3O6nN50orrZS9llta7qQYZFaQvcxN2GGSkplH5MpUdRK5niCvbCDxT2x8qZp6ZVLyWt2iDZCczLwMzY1ScAAuuugiIHdVR+HJ4osv3srLqYpl5sYYY7qWjllQqVGv7LfVO/4yaa+uLVWxR0TWhqTQfZGaBRWRZF5VtGNTvISt/2QtqHqIYhVZrs2sol8HTbGgxh577J755puP22+/vRnXVBeyrqIopZP3ry0oY4wxXYsXKGOMMUliF18/SdklVQv9qEUG5Jn+AHvttVfTrqeb5vP555/PXqspZIKMEC6+hOgKkUQ3YRefMcaYrqVeC+p94NXWXU7XME1PT8/Avt9WHc9nhuez+TQ8p57PAr5Hm0tN81nXAmWMMca0C7v4jDHGJIkXKGOMMUniBcoYY0ySeIEyxhiTJF6gjDHGJIkXKGOMMUniBcoYY0ySeIEyxhiTJF6gjDHGJMn/AQCOWsW4ox6FAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 62/100, d_loss=0.662, g_loss=0.874                                                                                                                      \n",
      "epoch = 63/100, d_loss=0.656, g_loss=0.866                                                                                                                      \n",
      "epoch = 64/100, d_loss=0.662, g_loss=0.866                                                                                                                      \n",
      "epoch = 65/100, d_loss=0.631, g_loss=0.870                                                                                                                      \n",
      "epoch = 66/100, d_loss=0.657, g_loss=0.855                                                                                                                      \n",
      "epoch = 67/100, d_loss=0.659, g_loss=0.820                                                                                                                      \n",
      "epoch = 68/100, d_loss=0.732, g_loss=0.804                                                                                                                      \n",
      "epoch = 69/100, d_loss=0.638, g_loss=0.881                                                                                                                      \n",
      "epoch = 70/100, d_loss=0.635, g_loss=0.869                                                                                                                      \n",
      "epoch = 71/100, d_loss=0.648, g_loss=0.868                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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y8avbN52llp+87agjDHGZEnTZObyNQNMMcUUQLlvX2jFnnPOOTv0xRX81VdfBWDGGWcE4Ljjjkt9O+20E/Dr8U3Lslx66aVTm3z62jE999xzqe+8887rcI165aeywBpxrVajFgmv4lRQjP+mm26a2tZYYw2g0tJtJSaeeGIAXn/99dQWUxsA1l577fT4vvvuA2DmmWcGYPrpp099ioncfffdqU2x6TnmmAOAQw45JPXtt99+QOUc7K3J05pHSqvR/Q8Ki0hWeIzhldE+HUfxwEhPSf1tQRljjMkSL1DGGGOypEdEEmUBtSiEGJXJOSoU8AeYdtppK/rkFoDGyiVbIag/++yzA3DXXXelNrn21l13XaDSfH///feB6i7Q7nLZtcJ4htdJjzWek046KVCIeaCQ9Fcjjufqq68OwAYbbNChbaGFFgIKKXpkJAHrLEQSm2++OQBvv/12apOwQVVJ4hio7bTTTgPghBNOSH2HHXYYAFNNNVVqUxrEjjvuCBS1EaEQXR166KGpTW6uLriomiqSKPuO5dYEOPPMM4EiFaKshqb+Ls7fsoomep7EVRJPQZEyEb+zrgqnLJIwxhjTsvSISKJsdR599NFTm1bgL774AoDxxx8/9Sm4OmDAgA7X1e612k6+mUlmPYmCxQAffPABUOxyYv28q666CoAnnngCgE8//bSm62tHFiXBCy+8MADXXXddh+fnXuOrK8Q5K3bbbTcA/vOf/wCVYz3PPPMA8OSTT3b4uzvvvBMoLCMoxAOyBgAmnHBCoLqXodm16ap916ruHn+HG264IQDvvfceUCmO2n777QEYOnQoUJlCcv755wOVggsl5utaF154YepTzcRo1bb3DsQUjLIai7lQ9h1vueWW6fFSSy01yr/VXLr++utTn7wsUayjufbUU08BlVL//fffH6i0YvW3ZWKKerEFZYwxJku8QBljjMmSukUSZTWw2hPdTxtttBFQmeux3HLLAYXbackll0x9cv+p7P4nn3yS+soynatlPzeS3IL6Dz/8cHo8cODAij7lmUGRqV/rOOl7ldkfxS0y7aMLpavkNp4Rjd8zzzzToU/u6G+//RaAzTbbLPWpIkesH6mKB2U1KTWe+o6gyANaeeWVAbjppptqfdtZiCT0OY888sjUNnjwYABWWWUVACaffPLUd9JJJwHw0UcfAZVuVbnjVH8P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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 72/100, d_loss=0.665, g_loss=0.894                                                                                                                      \n",
      "epoch = 73/100, d_loss=0.679, g_loss=0.851                                                                                                                      \n",
      "epoch = 74/100, d_loss=0.647, g_loss=0.883                                                                                                                      \n",
      "epoch = 75/100, d_loss=0.671, g_loss=0.855                                                                                                                      \n",
      "epoch = 76/100, d_loss=0.660, g_loss=0.868                                                                                                                      \n",
      "epoch = 77/100, d_loss=0.657, g_loss=0.849                                                                                                                      \n",
      "epoch = 78/100, d_loss=0.643, g_loss=0.885                                                                                                                      \n",
      "epoch = 79/100, d_loss=0.632, g_loss=0.836                                                                                                                                                                                                                          \n",
      "epoch = 80/100, d_loss=0.633, g_loss=0.861                                                                                                                      \n",
      "epoch = 81/100, d_loss=0.640, g_loss=0.911                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "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iy++AGDiiSdu6XlUfT4b3d2rlFULK4Y83NHRsUhPPqBV87n00ksDcOedd470PTPNNBMAr7/+enZsggkmAOCrr76K5wj0ys6+x/MJadzz9TL22GMDuUXVbOq5521BGWOMSRLHoH7hDB48OHstyynu6jfeeGMg91F/++23vXh26fPdd98BcNNNNwGwxRZbZGMffvghUL6713xGa2B0ZvLJJ89ev/HGGwBceeWVAKy99tpd3r/gggsC8NZbb2XHZKUutNBC2TGNv/zyyyP927IEoHXWQBUoszZrWaDTTz89ACNGjGj9yY0EW1DGGGOSxAuUMcaYJKmMi09B5Q033DA7duqppwLw7LPPZsdeffXnqvibbropABNOOGE29uWXXwLFrOkVVlgBgKuvvhrIA7GR3pRYjzXWzz/JDz/80JLPn2WWWQB44oknAJhyyimzMbnvogtF7zM5UUp+zjnnAPl1eeyxx2Zjp59+OgAPPvhgdkxze9555wGwwAILdHn/tttu24rTbivxPnzllVcKY9GlrHttvPHGA2DaaafNxiSYuPfee7NjW221FVA7oP9LdutF5FY+4ogjsmMSP8Xr9uSTTwZgscUWA2CKKabIxsYZZxwgd22Pip6KgWxBGWOMSZIkZOaLL744AG+++SZQtGKef/55ILeSZp555mzsvvvuA2D55Zcf6Wd/8skn2etJJpkEKFpEsqY+//xzoCin1k5ZVg3kO4GUZdG1dpOS78rSjEgQcfHFF7fitGqS8nyGzweKQXddl7fddhsAt9xySzY2zTTTAEXrQcmpshBkSQFst912QNN2/EnIzKeeemoA3nnnnZG+J35f3a8Sj8jih/Ld+KqrrgrA9ddfP9LP/93vfpe91nzrGfPNN9+M+kv8TGVl5rpuJ5poIgBmnHHGbOzGG28EipaquPzyy4HcSwBw7bXXAs2R9VtmbowxprJ4gTLGGJMkSbj4hEzQGIBTnsMdd9wBwJprrpmNKWAXc3MUCPzss8+AXCwBcM011zTtXHvTJVXmfuwuO+20EwBDhgwB4LjjjsvGTjjhBAAWWST3ZMjF2upM/Sq4+EQU5ciNp/qFMWdEeTvLLLNMduzoo48GYPvttwegX79+2dh7771X+EyAt99+u7un2TYXXxSR6LoZNmxYdmzQoEFAHnzfc889szFd62eddRZQdOm/9tprOq/smFz0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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 82/100, d_loss=0.657, g_loss=0.892                                                                                                                      \n",
      "epoch = 83/100, d_loss=0.650, g_loss=0.881                                                                                                                      \n",
      "epoch = 84/100, d_loss=0.697, g_loss=0.888                                                                                                                      \n",
      "epoch = 85/100, d_loss=0.635, g_loss=0.899                                                                                                                      \n",
      "epoch = 86/100, d_loss=0.632, g_loss=0.872                                                                                                                      \n",
      "epoch = 87/100, d_loss=0.649, g_loss=0.824                                                                                                                      \n",
      "epoch = 88/100, d_loss=0.632, g_loss=0.860                                                                                                                      \n",
      "epoch = 89/100, d_loss=0.662, g_loss=0.878                                                                                                                      \n",
      "epoch = 90/100, d_loss=0.667, g_loss=0.866                                                                                                                      \n",
      "epoch = 91/100, d_loss=0.664, g_loss=0.860                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztnWe4VcX1xn9Ejb33buy9oLHztxMVYhS7iF1R7BWNvbfHgkZRoyaoUdEYMdEHxRiVEKOJDXvvXcTey/1/MO/sdS7byy2nzLm8vy9sZu49Z5+5c/bMWuudtXq0tLRgjDHG5MbPGn0DxhhjTBleoIwxxmSJFyhjjDFZ4gXKGGNMlniBMsYYkyVeoIwxxmSJFyhjjDFZ4gXKGGNMlniBMsYYkyWTd+SHe/To4bQT/6OlpaVHV1/D41ng8aw641paWmbvygt4PCvo8niCxzTSnu+8LShjuievNvoGuhkezwbQIQvKGNNY3nnnnXQ911xzNfBOjKk9tqCMMcZkiRcoY4wxWWIXnzFdoEePH+O89SpbY7eemZSwBWWMMSZLsregtEMV+++/f7q+9dZbAfj2229T2+uvv16fGzMGWGGFFYBi3n3wwQeNvJ2mYrLJJgPg+++/T2133303UHzPn3zyydTn4qqd46qrrgJgp512avCddBxbUMYYY7LEC5Qxxpgs6dERs7lep6CnnXbadD3TTDMBMGTIEABWXnnl1LfQQgsB8M0336Q2uQuWX355AF544YWa3GPOmQ9mnnlmAD777DMAJp+88OR+/fXXAMw666wAjB8/PvVFV0u9aeR4Xnzxxel60KBBAPzjH/9Ibdtuuy1QjFUcp3qLJDrAQy0tLat05QWqOT+nmmqqdP3ll18CxZhFN/4XX3wBwDTTTAPAIYcckvrOO++8at1OZ+jyeELtn6HXX389AMOGDUttDzzwAAAfffQRUDlX9Wz47rvvUlu95rIzSRhjjGlauiySmH766QH49NNPu3wzYsEFF0zXhx56KABrrrkmAHPOOWfqk4Uw3XTTpbYbb7wRgC233BKAM888s2r3lTOyJqHYrcpaisiiXHzxxQFYffXVU9/jjz8OwCeffFKr28wS7dYj6623Xrp+7733fvJ3FejXrlP/B5hnnnkAC3cATj755AnafvjhB6ByzH72sx/3zA8++CAA5557bupbf/31ATjnnHNS2z333FP1e80dicKmmGKK1HbbbbcB8OyzzwLw1FNPpT5Z/osuuihQmY3k73//O1A53yVM6devHwCPPvpodT9AB7AFZYwxJkuyikFp93Tttdemtg022AAodlmKr0Cxs407YO0u5NeeZZZZUl81fau5xaBmn71ItLz00ksD8OqrP+a3fOWVVyb4+RVXXBGANdZYI7XJV/3www9X67baTS7j+fLLLwOVFmlbKP65zjrrADB8+PDUp/k8YMCA1FbHHX9WMajoYRk1ahQAffv2BaB///6pb/DgwUDhAXnzzTdTn8azEfESMo9B6XiD5lccUz0Ty2LM8oDF4xExZg1FzBAKb1U1xt0xKGOMMU2LFyhjjDFZklUmCUmfY5BeZr1cewqsAswxxxxAIZaAQpauwOBss82W+saNGwdkKQnuEAsssEC6/vWvfw3ARRddlNpGjx4NFG4/BZyhEJnsuOOOAFx55ZWpr0xU0ZooCW72cZxxxhmByiB9e117QsH/f/7znwCceuqpqU+S3/fffz+1/fznPwcqj0ZMCmy11Vbp+q677gIK93ucRzfffDNQ7o5S2yqrFJ62ddddFygk6I08KlFvyo476HkZ+9oaE7nv4tGejz/+GCjmauxrndmn1tiCMsYYkyVZiSRGjhwJFJYUFLulmG9PaBeqnHwA2223HQDPP/88UCnFPPbYYwG45pprOnRfZVZDLkH9n3hdoPwgpKwrjcumm26a+uKh3XrTyPE8+OCD07WOJWgnCoUVLtn4JZdckvruvfdeAHr16gXA3HPPnfqWWGKJCd5r3333BSot3hqRlUgizkFZ8VHu3BrNz/h80s5+yimnTG2S8OvYxNRTT536qnxcIhuRxLzzzgsUIqiIJOHRymwPSmwAhcdFYpQzzjgj9Z100kk/+Rr6zkQvV1tYJGGMMaZp8QJljDEmS7Jw8cmc1+nn+eefP/W9+OKLANx///0AHH744alPwbt4bkpngKTX18lqgNVWWw2o1PV3lnq6pMrKErRGAU2YMABf5q6Sa2S++eZLfToL0V4TvZo00sVX5sJV3jIohDdl6MxImUtKApSNN944tfXu3RuoFK7UiCxcfJp7cZ699tprE/29nj17AkU5EyhcpvEZoOwnV1xxBVDpfi0LC3SBbFx8bblI9ex84403OvSaUSh03XXXAdCn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2rzj7zoew/Yz66yzAvDBBx80+E66L8stt1y6Hjt2LJDvc9MWlDHGmCzxAmWMMSZLenTE/VCrg3uTTTYZAKutthoATzzxROpbeOGFAXj00Ucn+D0F+r/88ssJ+uabbz4A3njjjere7P9opoOlk08+oSd32LBhAHz66aepbY899gBg/fXXT22PPPLIBD9XC5ppPNsiuptF/I5JMFEHl8pDLS0tq3TlBeo1nvoew4Tf5dlmmy1djxkzBoCDDz44tY0cObLGd5fo8nhCY+do2dzU83XcuHGp7aOPPqrL/bTnO28LyhhjTJZ02YKad955AXjzzTe7fDPaSX399depTTtN7TynmmqqCX4v7rpa7xJqtVOt1Y6/Z8+eADz88MNdffnElFNOma6POeYYAAYOHAhUysxPOOEEoBCtQP0C/N3FgiojzkmN5/zzzw/A22+/nfq+/fbbar5t01hQkQEDBgBw9dVXA/DCCy+kPomnPv7449S2+OKLA4XHZIoppkh9n3zySTVvrWYWlJ5t1fiuteVV0jz8+c9/ntr0rK2nkGe77bbjjjvuYPz48bagjDHGNCd1j0GV7Ra0sqvvvvvuS319+/YFYJdddgHgsssuS33aCbz//vtdva0O0ww7fsX2dt1119T2u9/9Dih261dccUXqO/zwwyv66kkzjGdHkYR/hRVWSG36W+jfp556KvVF+W8VaBoLKh4rmWaaaYDisLhioADLL788AB9++GFq+89//gMUxybWWGON1Df33HMDlVZqF8g6BqVnp/6NnpHpp58egPfeew+Ar776KvXNMcccQHFIH+onOXcMyhhjTNPiBcoYY0yWZJFJQq4oEc10mZtnn332BL8n+XT8/e+//74Wt9iUyHUqVwcUblFljTjooIM6/frVDO42EzHILJfUQgstBMAyyyyT+q655pqJvtayyy6briVgOeWUU1KbXveVV17p7O1mx7nnngvAxhtvDBSuZYDRo0cDsN566wGV4yM+//zzdL3BBhsA8M477wCV7sLFFlvsJ+9B4oAoIOoOzDPPPAA88MADqU3uPj0vY67NVVddFSgyeAA8//zzAHzxxRe1vdl2YAvKGGNMltTdgirbbbcnKC9rIP6+s26Xo53SySefDED//v1Tn8ass0IIyaOh2IUq+NpdkaW4zjrrAIUcHwphg8Y8Sps/++wzoLCyoPywpOjd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JUmA4nutjOjvvvtuu96zo89XW1DGGGOaFi9QxhhjsqTuufgUzC8rgqWfW3311VPb1VdfDRT50mImic033xyodKHIPJVroax8fHdkhRVWSNdyQclEjy5QjYeC0PFvoyD0uuuum9rkwpKrJabxV6kSlZKGyvImjSL+zcvcv51Frs9YfkCZCSTmWX/99VOf5ltZaZmO0lk3SiPo27dvutbZm/g3UQly/W1iwcLWn68tt16krUKROncFRXC/rMBhd0DjEIsSKmefnrnxb6FnhbLCQCGcUE7OKForE0LUck7agjLGGJMldbGg4gqrgGi0oLQFB4EtAAAF5ElEQVQ71OnnxRZbLPUpQCeRxOWXX576tBM76KCDSt8LKuXXIkok21vOOHdiMUZlez7mmGOAyjFR1odbbrkFqLRIJUCJVpCC1cqQEDNt9OnTB4D9998/teWwM63VeyvL8zPPPJPaVlnlx7i5rM64w9R1nG/tubcymXkzWE76nNddd11qkwW04YYbpra7774bqE4WDX2/Na9j4T3N7bKM8d3NcmpNnEP6Tuq7fP7556c+eabic1DPaHlNapmtfGLYgjLGGJMldbGgIoppKBccFLsf7eBVkwdgn332AWDGGWcEKmtFqQR3zCen3YLyfEX/qd6nLaupbAfWDMQdtg47lpWxV5nt0aNHA5WZjZWnL2Ys12FHxQJlRUDxt5GcHWCLLbYAirLR3QntSuPh5tZjHP37Oozb1m49Wlc6XiHrFqB3794/+fON3NmWofuJcSMdO1BOx2oQx0AxUX1XzznnnNQ3YMAAAO64447UpkzoMebSHSmz2pXnMManVCsrHg/R8zGHmL0tKGOMMVniBcoYY0yW1N3FJ6LbSdkMVMrhoosuSn0qUqZ8XfFkuSSscrNAIbc+9NBDJ3gfuV/KTNf5558fKM/512woKHzYYYcBRRE4gDPPPBOAO++8E4CBAwemPuUlO+2001Jb64wcUYwRXXuiO7r25C6RUCS6oDX3NE6xvPYll1xS0QcTih2im04u6FhgrzW5ufUiyl4Q3UuxrE5rNtlkE6DtIoIxq4xed+utt05tGg8V15Ob+qforq691scQYghFbtDnn38eqMweo2diLEmi8hqSmzcSW1DGGGOypO65+BRAjUIF5YeLu3Oh8sMK4sUsvToAGXN5ff7550Dty3nnljuuLNeZso3HHeqDDz4IFHkMlfEcir9JlOYrx5z+jTv47pzbsGw8ZWXH+fbcc89V/Hw8qKsicFHE05pqix60O/7www8blosvHkzW93GPPfZIbbKAVHhQVQygyF+onHlxjskSiCXflWdviSWWAIp5CoXFEAtqdoGsc/G1zi1YNpdaS/IBLrzwQgD222+/1DZs2DAAdtlll1rcasK5+IwxxjQtXqCMMcZkSd1FEnK9RRP0iSeeAArzNLpXHnnkEQA23XRToAjuQ5FPruyk+KSMAsvjx48HKs/mSGSyzTbbAEW+LSgEKRprKFxWckV19xP4osx9KVd0FEm0dqX06tUrXStjQltUW/QQ761R6PwRFC67KGRSBhIJkmIw/ogjjgCK+RZ/76ijjgKKonxQjJ8EPjF0EOd9d0fPTIkdygoW6rsbXfg6XxpLaigMM++88wLFWalGYAvKGGNMljSsYGG0knRdtptsHayO96u+RmQszy2oXw0amUevGcZT801BZIBtt90WKILzMdg8dOjQWt7OxMiiYKGIcnFlGzn66KOBIsNBGVFEsvTSSwPQv3//1HbwwQcDMMssswCw9tprp75Ro0Z19bYjNRdJSNQEcPvtt3f1rcreG6gsuDlixAigctyUeUMCqlodbbBIwhhjTNOSVcl3ES0ird65ZXNuhh1/M9FM4xnrX8lPf9555wEwePDgetxCe8jKguosUdKv+FK0AHRYvw6ek6xl5u1BVn70Sumw9G677ZbadJxC9d6GDBlSk/uxBWWMMaZp8QJljDEmS+ouM28rEK8T6DGPlApq6TR+2e+1levMmGqh0tnjxo1LbZqrsUjfpE4MuI8ZM6ZLr1VWGsfHSjpHWzlI+/btm9okTFExzkZiC8oYY0yWZCmSaAaaKajfDDTDeMr632GHHVLb8OHDgbaLYDaIbiGSyIimF0mUUZafrzW18lBZJGGMMaZp8QJljDEmS+zi6yTN4JJqJjyeVccuvurSLV18jcQuPmOMMU1LR2Xm44BXa3EjTcaCVXodj+ePeDyrTzXG1ONZ4DlaXdo1nh1y8RljjDH1wi4+Y4wxWeIFyhhjTJZ4gTLGGJMlXqCMMcZkiRcoY4wxWeIFyhhjTJZ4gTLGGJMlXqCMMcZkiRcoY4wxWfL/zbX2+E3y1UsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "epoch = 92/100, d_loss=0.628, g_loss=0.895                                                                                                                      \n",
      "epoch = 93/100, d_loss=0.637, g_loss=0.852                                                                                                                      \n",
      "epoch = 94/100, d_loss=0.672, g_loss=0.879                                                                                                                      \n",
      "epoch = 95/100, d_loss=0.665, g_loss=0.885                                                                                                                      \n",
      "epoch = 96/100, d_loss=0.682, g_loss=0.884                                                                                                                      \n",
      "epoch = 97/100, d_loss=0.663, g_loss=0.862                                                                                                                      \n",
      "epoch = 98/100, d_loss=0.621, g_loss=0.860                                                                                                                      \n",
      "epoch = 99/100, d_loss=0.627, g_loss=0.933                                                                                                                      \n",
      "epoch = 100/100, d_loss=0.674, g_loss=0.929                                                                                                                      \n",
      "epoch = 101/100, d_loss=0.657, g_loss=0.869                                                                                                                      \n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAADRCAYAAACZ6CZ9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJztnWWYZNXVhd/B3T04BHcZIFjwACEEnkAgaIDgHpwPDRB0CBocBg0DTyBAcAuawd3d3d36+0HWObu6i56q7pJTPev9MzXnVlfdOnVvnbP3XnvvQV1dXRhjjDGlMUq7T8AYY4yphhcoY4wxReIFyhhjTJF4gTLGGFMkXqCMMcYUiRcoY4wxReIFyhhjTJF4gTLGGFMkXqCMMcYUyWj1PHnQoEEuO/E/urq6BvX3NTyfGc9nw3mvq6tr8v68gOezgn7PJzR/Tueff34AHn744Ya95qBB+dZsZOWhWu75uhYoY0zH8HK7T2CA0RHzecMNNwAwxRRTNOw1xxxzzPT4q6++atjr1oIXqF4YddRRAfj+++/bfCbGmN545513gPp/mD/55JP0eIIJJmjoObWDRi5MotWLUsQxKGOMMUXiBcoYY0yR2MXXC3btmRExyig/7vF++OGHNp/JyE1fXVsDwa1XDYUnoLN/x2xBGWOMKZKOs6Cmnnrq9PjNN98EYJJJJklj0047LQCPPPJIXa879thjA/Dll1/29xTNSMT6668PwMUXXwxUXncKLs8333xpbPTRRwd6l+vqOQDffvtt407WjDR0stUUsQVljDGmSLxAGWOMKZKOcfGNO+64AAwfPjyNTTTRRAB8/vnnaWyqqaYC4P777wcqg9fbbrstAPfdd1+P1x/ZXHsKon7zzTdpTO7Rt99+O405+J+RIGK22WZLY0qMvPnmmwGYY4450jG58T744IM0dvnllwP5WpSbGvJcD0S3XnTNv/XWWwBMP/30ADzzzDPp2E477QRk8cKwYcPSsRtvvBGA9957L40tscQSQO8u0/333z89Pvjgg/v2AUxbsAVljDGmSAbVU1tplFFG6RpttNGavsP74x//2GNss802A2CWWWZJY3feeScAv/3tb9OYMsrvvvtuAHbbbbd07OWXf6xWcvzxx6cx7djqtRQ6tXacrIDrrrsOgBVXXDEdO//88wHYeeed09j777/fkvNq1nyus846AFxyySX9fXmWWmopAE466aQ0NvvsswO5HMzJJ5+cjm211VZAnvPIp59+CsATTzzR4/XjtdiP2mf3d3V1LdLXP4bGXp9xDuStkBhkjTXWSMf0PSnIP91006VjF154IVApilpkkR8/4scffwzAnHPOmY69++67AIw11lg93rsP9Hs+ofY51dy005o+8MADATjggAPSWKzL119quedtQRljjCmSuiyovu6oaq2Gq53OHXfckcYWXnhhIO8k4k5MrxV90opBXXbZZQCstdZa6Zh2Z7///e/TmHa+9dab6lQLSlx//fUArLTSSmnsqquuAuA3v/lNGmtk9eLeKHk+J5/8xyLWkpIvt9xy6dgf/vAHAI444gigMqb32muvATDXXHOlsccffxzIO/911103HdO1qDhVP2mbBTXGGGOkx/PMMw+Qry3I8ahXXnkFgPHGGy8dU3x4jz32ALJlBHDeeecBcOutt6axE044Achxre222y4dO/300wEYOnRoGttwww2BPl3XLbWgSqDaHNmCMsYYY/ACZYwxplBaIjOv1ZyWZDQGMhVMHn/88YEcuIMs8T322GPTmFwsCyywAJDFEgAbbbQRUFm3K0qqRyZuueUWAJZZZpkex1rl1iuF0UbLt4GC85LcQ05j+O6774B8nUJ2+22yySZAdjEDXHPNNQDsu+++aWz77bcH8jUuV198/Qa5+NpGvL+eeuopIEvKIbtFlepw9tln93gNzb/cpJDl+qecckoa03zK9RRFKrqO11tvvTSm70lzPVBQeERzGlNv6kVCM9HOubIFZYwxpkhaIpKoFdXDm3nmmdPYpZdeCmRL5957703HFEidd95505hkv0OGDAHg+eefT8ckUz3zzDPTWF9rVpUc1K8FzdOTTz6Zxg499FAA9ttvv5afT2nzGRNutZt/7rnngBzcB5hpppmAbLm//vrr6ZiSTeOOXxbTjDPOCFRWnda1vfjii6cxSc5l5dWxm22bSCJaUBLhxPmUsOHrr78GspcEstWjf8cZZ5x0bJpppgFykjPA7rvvDuR7WtYZZDl6vMf1/fzsZz8DqsvOVQAA4KOPPtLDYkQSuiaiGEVCsXjuNZ4PUOk1UTEECdTi+zQycd8iCWOMMR2LFyhjjDFF0rZafNXMaJmZMTdHNfiuvvpqAB5++OF0TObpPvvsk8Y2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QqN8tVVWUiPmc5RRRukaa6yxRvg9y0LU9SPLEbI1Fa1IXbNRUNIdveef//znNKYqHbIsIMv8VcusWlWAiO5P7fRVjw7y91WtLThNlplHkVP3JoxxnmS9VPuc1X571MBRu/hY9UUWV5RJ18IDDzyQHks8pfOP1tUIaIvMvJHoN1e/swDvv/8+UGmVVhNXiWr3QKxMUQ+WmRtjjOlY+hSDknwWcsJnrWywwQZApdRRFpB2RnFn1T0GFatvq5bXFltskcbUd2a33XYDKuMLUeo6sqKdrGTUca4lPY/WbSfFmbq6umqykvWZr776aqD67j5eZ3q+5LeyGCDXgpNlL6sGchXzGBeRJ0A70RFZULfffjuQ46bxvH7CcmoJMX503nnnAflzRgtn4403BipTGDSfqiweY3SKUSseHenNctK1G70pjz76KJCtppEdWbixUMF1110H9G41RcYcc0ygMnY9omu4P9iCMsYYUyReoIwxxhRJn1x89br1IldeeSVQ6aqQi0DugBtuuOEn/161tCCbpdElJVNfbsi+1okqmVpl4NWQW1RVESQzhRy4j9/NQCG6hyQ0qOaakEAnujzkItJcxUCxmu0pyBzdeap9Fpu7SXatOonRVbbkkksClcIAXdvNaAbXH6Lrd/311684FlM7dH3ecccdaUzCnH/9618AvPLKK+mYRFGan2oVZ+J7X3zxxUBu+a42JlCZymLg//7v/4DKBpFKhaiVY445BoCDDz44jema129vtTqAfcUWlDHGmCJpucxcAeYoddTuSjsvNc4DOPXUU4HciCuu+NqJRYtLz5N8MkogVWctSkv72rSu02XmEpOomRnAGWecAWQrF7I1deuttwLNafL3v9dt6nzGnbhqMioZVztLyLvzGATWrl4JjhLgAOyzzz4VfzciZBnouuxPJe8R0DCZeWy4qHtHjesA5p9//hG+VkwElRVfy047Wph6rMZ7AEceeSSQ57NZ1ycDQGaue13iEchW/uqrr57GVDihN84888z0WNZrvZX5LTM3xhjTsXiBMsYYUyQtd/EpoBYbXsmkVJ5JFD3MNddcQC4xH49J17/yyiunMeVRKJhXjf6IDMLfdbSL76ijjgIqA8kXXHABUNmSYPfdd2/J+bRyPru3CdE1A9n1Of3006cxNcvspJwwmlxJIt5DqpShezXmLkqcEl2sEqJMO+20QJ5fyJUkqt2XO++8MwAnnnhiGmvhd9LxLj7lnsbrXWIgVThpJXbxGWOM6VhaYkHFIKt2T1H2q2rkw4cP1/vE96x4rVgpYMEFFwSydQU5GNvsnVWnW1Cax1gJXjvT1VZbreXn0875rGZR12tlV6sc32ZaZkF1/8yLL754Pon/iaFOOOGENNb9OptqqqnSMXk+dtxxRwD23HPPvp38CJD1FtvBj4COt6CqXZvNrAIxImxBGWOM6VhaHoOqxthjjw1kebliIZBl45L61itlbBadbkEpebRav63YUltVz5tNp89ngTTVguoEGmzVNtSCilXpY8pNM1DPsUMOOaTHsdFHHx2o9EK1CltQxhhjOhYvUMYYY4qkqS4+Zc3XWspdrr56Gws2QjZeL3ZJNZaS57O7LD1KpruLcdpxLf4EI72Lr8F0vEginEN63M5r1C4+Y4wxHUufqpnXSq2Wk+hrS/aCpL1mANLdSuothWHw4MHpsRrxxeeryn5/OgIY0x866ffSFpQxxpgi8QJljDGmSIrIg+pESg7qdyIDZT57E1C0GIsk/seQIUPSY7WG6AMDRiRRChZJGGOM6VjqtaDeBV5u3ul0DDN0dXVN3t8X8XwmPJ+Np99z6vmswNdoY6lpPutaoIwxxphWYRefMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIvECZYwxpki8QBljjCkSL1DGGGOKxAuUMcaYIhmtnicPGjSoq1kn0ml0dXUN6u9reD4zns+G815XV9fk/XkBz2cF/Z5P8JxGarnnbUEZMzB5ud0nMMDwfLYBL1DGGGOKxAuUMcaYIqkrBmUGNosvvjgAxx57bBpbccUVAfj888/bck7GmP4x6qijAvD999//5HMGDcrhoK6ucsJktqCMMcYUiS2okZRRRvlxb/L++++nsYkmmgiAjz/+OI398MMPrT0xYwpi1llnBeC5555r85n0nd4sJ1GS1RSxBWWMMaZIvEAZY4wpkpHSxRcDgueffz4AG2ywAVBp6sbndTJjjDFGevzdd98B2WUx/vjj93j+uOOO2+P5xpSM7tVGu6pa6dobc8wx0+Ovv/66T69R7TerGe67VokqbEEZY4wpkgFrQc0999wA3HDDDWlMgoAPP/wwjb355ptADiRKPDCQ+Oabb9LjvffeG4DpppsOyBJUgIceegiAb7/9No3NPPPMALzyyisAfPnll809WWPqQDv5HXfcEYBrrrkmHXvmmWfack618Oijj6bH8847L9B3qymi+RhvvPHSmLwgc801F5Dv83isGvK8xN8P0SpRxcD7NTbGGDMgGFTPStiOQoejjz46kHf1+j/AoosuCsBLL72Uxl577TUAJplkEgDefvvtHq8VpdWTTTYZUH+8qZOKm8bP9tlnnwEw9thj93je8OHDAdhoo43SmCwnWZZxl6fXbYQUvZPms0O4v6ura5H+vECp8znPPPOkx3vssQcAQ4cOBeD2229Px1ZZZRUArrrqqjSm6z/GWWuk3/MJjZ3TanEg3afxN3G00X50lE011VQAvPPOO+mYnnfcccelsWHDhgG1ydP7g4vFGmOM6Vi8QBljjCmSloskJp/8x5Yq7777bk3Pl3kqczYG7B544AEAZptttjR26KGHAvD6668D8Oqrr6Zjd9xxBwDbbLNNGhsZgv733XdfetybO27NNdcE4NNPP01j3QOk/ZGXNksK3EhqOcfoZpardKyxxgJgnHHGScfOPvtsAJZZZpkeryFXqQLXkAU7jQiWdyrd53/22WdPx+SOn2KKKdKY7n259Lfccst07K9//SsAE044YRqTa09u7PPOO6+xH6DB6HN99NFHaUxzM3jw4B5juoerpYq88MILALzxxhvp2NJLLw3kaxXgggsuAGC77bYD4O9//3s6JvFFrM1pmbkxxpiRjpZbUL1ZTrKWovRRj5XEJjkpwLrrrttjbP/99wdgv/32A3J9OajchYwMKGB6yy23pLH55psPyLue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\n",
      "text/plain": [
       "<Figure size 432x288 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epochs = 100\n",
    "batch_size = 64\n",
    "smooth = 0.1\n",
    "\n",
    "real = np.ones(shape=(batch_size, 1))\n",
    "fake = np.zeros(shape=(batch_size, 1))\n",
    "\n",
    "d_loss = []\n",
    "d_g_loss = []\n",
    "\n",
    "for e in range(epochs + 1):\n",
    "    for i in range(len(X_train) // batch_size):\n",
    "        \n",
    "        # Train Discriminator weights\n",
    "        discriminator.trainable = True\n",
    "        \n",
    "        # Real samples\n",
    "        X_batch = X_train[i*batch_size:(i+1)*batch_size]\n",
    "        real_labels = y_train[i*batch_size:(i+1)*batch_size].reshape(-1, 1)\n",
    "        \n",
    "        d_loss_real = discriminator.train_on_batch(x=[X_batch, real_labels], y=real * (1 - smooth))\n",
    "        \n",
    "        # Fake Samples\n",
    "        z = np.random.normal(loc=0, scale=1, size=(batch_size, latent_dim))\n",
    "        random_labels = np.random.randint(0, 10, batch_size).reshape(-1, 1)\n",
    "        X_fake = generator.predict_on_batch([z, random_labels])\n",
    "        \n",
    "        d_loss_fake = discriminator.train_on_batch(x=[X_fake, random_labels], y=fake)\n",
    "         \n",
    "        # Discriminator loss\n",
    "        d_loss_batch = 0.5 * (d_loss_real[0] + d_loss_fake[0])\n",
    "        \n",
    "        # Train Generator weights\n",
    "        discriminator.trainable = False\n",
    "        \n",
    "        z = np.random.normal(loc=0, scale=1, size=(batch_size, latent_dim))\n",
    "        random_labels = np.random.randint(0, 10, batch_size).reshape(-1, 1)\n",
    "        d_g_loss_batch = d_g.train_on_batch(x=[z, random_labels], y=real)\n",
    "   \n",
    "        print(\n",
    "            'epoch = %d/%d, batch = %d/%d, d_loss=%.3f, g_loss=%.3f' % (e + 1, epochs, i, len(X_train) // batch_size, d_loss_batch, d_g_loss_batch[0]),\n",
    "            100*' ',\n",
    "            end='\\r'\n",
    "        )\n",
    "    \n",
    "    d_loss.append(d_loss_batch)\n",
    "    d_g_loss.append(d_g_loss_batch[0])\n",
    "    print('epoch = %d/%d, d_loss=%.3f, g_loss=%.3f' % (e + 1, epochs, d_loss[-1], d_g_loss[-1]), 100*' ')\n",
    "\n",
    "    if e % 10 == 0:\n",
    "        samples = 10\n",
    "        z = np.random.normal(loc=0, scale=1, size=(samples, latent_dim))\n",
    "        labels = np.arange(0, 10).reshape(-1, 1)\n",
    "        \n",
    "        x_fake = generator.predict([z, labels])\n",
    "\n",
    "        for k in range(samples):\n",
    "            plt.subplot(2, 5, k+1)\n",
    "            plt.imshow(x_fake[k].reshape(28, 28), cmap='gray')\n",
    "            plt.xticks([])\n",
    "            plt.yticks([])\n",
    "\n",
    "        plt.tight_layout()\n",
    "        plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5. Evaluate model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-09-20T13:42:41.963495Z",
     "start_time": "2018-09-20T13:42:41.787669Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plotting the metrics\n",
    "plt.plot(d_loss)\n",
    "plt.plot(d_g_loss)\n",
    "plt.title('Model loss')\n",
    "plt.ylabel('Loss')\n",
    "plt.xlabel('Epoch')\n",
    "plt.legend(['Discriminator', 'Adversarial'], loc='center right')\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
